貌似老師的中文翻譯源碼有個地方錯了,在 112 行左右的 type 函數(shù)應該是這樣的 :
function type(obj) {
return obj == null ? String(obj) :
class2type[toString.call(obj)] || "object"
}
少了 class2type
function type(obj) {
return obj == null ? String(obj) :
class2type[toString.call(obj)] || "object"
}
少了 class2type
2017-09-02
老師講的真的是不錯的,比較淺顯易懂,那些不懂的是自己的基礎(chǔ)功不扎實。__proto__ 指向創(chuàng)建這個對象的函數(shù)的顯式原型。“不覺得源碼是重寫proto我覺得是重寫prototype”,能問這個問題的肯定是沒有區(qū)分 __proto__ 和 prototype 的作用,老師講的沒有錯
2017-08-26
arr.__proto__.newFunc... 完全等于 Array.prototype.newFunc...
求老師更正一下。
求老師更正一下。
2017-08-24
老師講的不錯。但是有個地方我不明白,window.$ === undefined && (window.$ =Zepto)
2017-08-07
已采納回答 / 星躒
因為window下直接掛載的undefined可能會被用戶或其他庫的代碼覆蓋:<...code...>所以zepto作者在局部變量里定義了一個未初始化的undefined,因為未初始化,所以undefined變量值肯定為undefined,綜上就是為了避免全局undefined變量被覆蓋導致判斷不準的問題。
2017-07-31
對象是引用類型,arr.__proto__ 指向Array.prototype ,__proto__和prototype兩對象指向的是內(nèi)存的同一存儲空間。arr.__proto__.fn增加一個方法,Array.prototype和其他通過Array創(chuàng)建的對象都指向該空間,因此都有這個fn方法。但若arr.__proto__ = {fn: ..}用對象字面量賦值,會丟失對之前原型的引用,相當于arr.__proto__已重新指向內(nèi)存分配的另一個空間,和Array.prototype指向的已經(jīng)不是同一個空間了,因此Array.prototype以及通過Array創(chuàng)建的其他對象就訪問不到fn方法
2017-07-28