課程
/前端開發
/JavaScript
/zepto設計和源碼分析
我想問下,就是這個函數直接定義和在原型中定義在實際開發中有什么區別
2018-05-25
源自:zepto設計和源碼分析 1-3
正在回答
直接 `arr.test` 是給arr這個數組(本質還是對象)新增了一個新屬性,值為一個函數。
而 `arr.__proto__.test` 則是加在arr的原型上的。
類比面向對象的變成思想。假設一直狗會叫,那么這個方法是針對每一只具體的狗逐個去賦予它這個方法呢?還是直接在狗的這個抽象類對象上?
不過在實例代碼中用prototype的更多一些吧,不過和 `__proto__` 也是有區別的,簡單可以說prototype是從Array上訪問,而在具體以的某個? `[]` 上是不行。不過 `Array.prototype === [].__proto__`? ,因此可通過[].__proto__訪問修改Array.prototype。 具體區別需要深入JavaScript的原型鏈機制了。
舉報
介紹zepto的設計框架和實現原理,看完后能輕松解讀zepto所有源碼
2 回答文檔在哪里?怎么沒有看到?
1 回答$.fn的疑問
3 回答源碼里的 var undefined 是干嘛的?有人知道嗎?
2 回答測試修改了arr的__proto__會影響到其他的數組對象
1 回答下載下來的文檔有問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-06-02
直接 `arr.test` 是給arr這個數組(本質還是對象)新增了一個新屬性,值為一個函數。
而 `arr.__proto__.test` 則是加在arr的原型上的。
類比面向對象的變成思想。假設一直狗會叫,那么這個方法是針對每一只具體的狗逐個去賦予它這個方法呢?還是直接在狗的這個抽象類對象上?
不過在實例代碼中用prototype的更多一些吧,不過和 `__proto__` 也是有區別的,簡單可以說prototype是從Array上訪問,而在具體以的某個? `[]` 上是不行。不過 `Array.prototype === [].__proto__`? ,因此可通過[].__proto__訪問修改Array.prototype。 具體區別需要深入JavaScript的原型鏈機制了。