摘要:今天和前端組的小伙伴們討論了下的原型鏈,得出了一個看似很簡單的結論。對于一個對象上屬性的查找是遞歸的。給出一段代碼,相信會很容易理解原型鏈上的對象查找。從這個結果中可以很輕松看出原型鏈查找屬性的順序。
今天和前端組的小伙伴們討論了下js的原型鏈,得出了一個看似很簡單的結論。
對于一個對象上屬性的查找是遞歸的。
查找屬性會從自身屬性(OwnProperty)找起,如果不存在,就查看prototype中的存在不存在。
prototype是一個對象
可以從以上的三點中,看出一個遞歸關系。給出一段代碼,相信會很容易理解原型鏈上的對象查找。
var A = function () { this.i = 2; } A.prototype.i = 3; var B = function() { this.i = 4; } B.prototype = new A(); var b = new B(); console.log(b.i); //4; delete b.i; console.log(b.i); // 2; delete B.prototype.i; console.log(b.i); //3
從這個結果中可以很輕松看出原型鏈查找屬性的順序。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85300.html
摘要:在使用的過程中,通過操作符為對象添加新屬性是很常見的操作。但是,這個操作的結果實際上會受到原型鏈上的同名屬性影響。通過它,可以做到操作符做不到的事情,比如為對象設置一個新屬性,即使它的原型鏈上已經有一個的同名屬性。 在使用JavaScript的過程中,通過=操作符為對象添加新屬性是很常見的操作:obj.newProp = value;。但是,這個操作的結果實際上會受到原型鏈上的同名屬性...
摘要:我們已經回答了的構造函數和原型都是誰的問題,現在牽扯出來一個,我們繼續檢查的構造函數是全局對象上屬性叫的對象的原型是個匿名函數,按照關于構造函數的約定,它應該是構造函數的屬性我們給這個對象起個名字,叫。 我不確定JavaScript語言是否應該被稱為Object-Oriented,因為Object Oriented是一組語言特性、編程模式、和設計與工程方法的籠統稱謂,沒有一個詳盡和大家...
摘要:并沒有類繼承模型,而是使用原型對象進行原型式繼承。我們舉例說明原型鏈查找機制當訪問一個對象的屬性時,會從對象本身開始往上遍歷整個原型鏈,直到找到對應屬性為止。原始類型有以下五種型。此外,試圖查找一個不存在屬性時將會遍歷整個原型鏈。 Javascript 并沒有類繼承模型,而是使用原型對象 prototype 進行原型式繼承。 盡管人們經常將此看做是 Javascript 的一個缺點,然...
摘要:原文相信很多才接觸前端的小伙伴甚至工作幾年的前端小伙伴對這個操作符的了解還停留在一知半解的地步,比較模糊。 原文:http://blog.xieyangogo.cn/201... 相信很多才接觸前端的小伙伴甚至工作幾年的前端小伙伴對new這個操作符的了解還停留在一知半解的地步,比較模糊。就比如前不久接觸到一個入職兩年的前端小伙伴,他告訴我new是用來創建對象的,無可厚非,可能很多人都...
摘要:這樣每個實例獨享自己的屬性,并和其他同類型的實例共享方法構造函數原型以上這種方式定義的類型,可以通過來判斷一個實例是否是類型的實際上是通過實例的原型鏈來判斷一個對象是否某個類型的實例的,具體的細節后面會詳細介紹。 JavaScript面向對象編程 如何定義自定義類型 首先需要明確,JavaScript并不是傳統意義上的OO語言,它并沒有class的概念, 而是包含了另一套異常強大的...
閱讀 2618·2021-11-16 11:40
閱讀 3414·2021-11-08 13:26
閱讀 881·2021-10-28 09:32
閱讀 3538·2021-09-13 10:26
閱讀 812·2019-08-30 15:55
閱讀 785·2019-08-30 15:44
閱讀 1914·2019-08-30 15:44
閱讀 1760·2019-08-30 13:48