javascript-basis-important

Mountain One --- 作用域及閉包

一、預(yù)解釋(變量提升)

var function 會進行瀏覽器提前預(yù)解釋,
函數(shù)聲明與var 聲明沖突(var并且賦值)則使用var 的值,否則使用函數(shù)值。(函數(shù)提升優(yōu)先級高于var)
當聲明沖突第二次(多次)不重復(fù)聲明變量,但是會進行重新賦值。

二、作用域鏈

函數(shù)定義在哪就會在按照當前作于域往上查找。(無論在哪執(zhí)行)

三、閉包

只要存在引用(堆~地址) 則不銷毀存在閉包內(nèi)的變量值。

Mountain Two --- 原型與原型鏈

1.每一個函數(shù)數(shù)據(jù)類型(普通函數(shù)、類)都有一個天生自帶的屬性:prototype (原型) ,并且這個屬性是一個對象數(shù)據(jù)類型的值;
2并且在prototype上瀏覽器天生給它加了一個屬性constructor(構(gòu)造函數(shù)),屬性值是當前函數(shù)(類)本身;
3. 每一個對象數(shù)據(jù)類型(函數(shù)、普通的對象、實例、prototype....) 也天生(瀏覽器)自帶一個屬性:"__proto__",屬性值是當前實例所屬類的原型([所屬類].prototype)

Mountain Three --- 異步和單線程

--empty

Postil:

~ children.prototype = new Parents; (quote & private and publice)
~ Parents.call(this) ; ( clone & private )
~冒充繼承 (children in new Parents ~this[key] =?)
~混合繼承 call + ( new Parents && ?:= Parents.prototype )
? why not use " Parents.prototype" ?
quote ~context
~寄生組合繼承 call + Object.create(Parents.prototype)
并且修正被繼承過來的實例的constructor = 子類 方法
clone Parents.prototype .

var arr = new Array(); 實例創(chuàng)建的方式---->構(gòu)造函數(shù)執(zhí)行方式

for ~in : 可遍歷私有屬性(可枚舉)和在原型上(prototype)自定義的屬性(不可枚舉),其它不可枚舉都無法遍歷。

Object.create() ~ 把一個對象的原型( prototype ) 當作返回值的原型鏈(proto)
function Obc(o){
function Fn(){}
Fn.prototype = o;
return new Fn;
}

call fn1.call.call(fn2) fn1.call = 'sdd‘ 替代法解答. call源碼內(nèi)部 ( 會自動 this 執(zhí)行)

reflow 重排 、重繪 存在Node創(chuàng)建文檔碎片.一次性添加

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容