成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js原型鏈2

khs1994 / 1776人閱讀

摘要:系列文章原型鏈原型鏈代碼如下內(nèi)存分析圖如下三個疑問。的對象在找不到屬性或函數(shù)時,會繼續(xù)從原型中找。這是原型鏈的基本機制。第三個問題,中,因為是調(diào)的,也就是,由于中沒有屬性,所以返回。這里涉及的知識雖然簡單,但是整個的基礎。

系列文章

js原型鏈1
js原型鏈2

代碼如下:
var person = function(name){
this.name = name
};

person.prototype.getName = function(){
 return this.name; 
}

var zzz = new person("zzz");
console.log(zzz.getName()); // zzz
console.log(zzz.__proto__.getName());// undefined
內(nèi)存分析圖如下:

三個疑問。
1. zzz.__ptoto__.getName()是undefined?
2. zzz.getName()有值?
3. zzz中沒有getName函數(shù),為什么可以直接調(diào)用???
分析問題

下面對這三個問題進行一一解答:
首先說第三個。js的對象在找不到屬性或函數(shù)時,會繼續(xù)從原型中找。也就是zzz中沒有getName函數(shù),但會從person的prototype中找,找到后,調(diào)用getName,由于是zzz.getName(),所以getName中的this依然是zzz,所以this.name是有值的。這是原型鏈的基本機制。

那么第二個問題也就知道了。

第三個問題,zzz.__proto__.getName()中,因為是zzz.__proto__調(diào)的getName,也就是person.prototype.getName,由于person.prototype中沒有name屬性,所以返回undefined。

這里涉及的知識雖然簡單,但是整個js的基礎。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/81697.html

相關文章

  • 從實現(xiàn)角度分析js原型

    摘要:從實現(xiàn)角度分析原型鏈歡迎來我的博客閱讀從實現(xiàn)角度分析原型鏈網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說作為補充,就讓我們換個角度,從實現(xiàn)來分析一下吧本文假設你對原型鏈已經(jīng)有所了解。 從實現(xiàn)角度分析js原型鏈 歡迎來我的博客閱讀:《從實現(xiàn)角度分析js原型鏈》 網(wǎng)上介紹原型鏈的優(yōu)質(zhì)文章已經(jīng)有很多了,比如說: https://github.com/mqyqingfeng/Blog/issu...

    CompileYouth 評論0 收藏0
  • JS基礎-原型、原型真的不能一知半解

    摘要:原型鏈和對象的原型是對象實例和它的構造函數(shù)之間建立的鏈接,它的值是構造函數(shù)的。對象的原型根據(jù)上文提到的構造調(diào)用函數(shù)的時候會創(chuàng)建一個新對象,自動將的原型指向構造函數(shù)的對象。 showImg(https://segmentfault.com/img/remote/1460000020185197); JS的原型、原型鏈一直是比較難理解的內(nèi)容,不少初學者甚至有一定經(jīng)驗的老鳥都不一定能完全說清...

    changfeng1050 評論0 收藏0
  • js原型 原型 原型的繼承

    摘要:圖片描述缺點是無法實現(xiàn)多繼承可以在構造函數(shù)中,為實例添加實例屬性。 對象的方法 Object.assign() 對象可以簡寫 ,如果 key 和 value 相等則可以簡寫 let name = xm; let age = 2; let obj = { name, age, fn(){ // 可以省略函數(shù)關鍵字和冒號: console.log(2...

    soasme 評論0 收藏0
  • 理解js原型與繼承

    摘要:相當于在用原型繼承編寫復雜代碼前理解原型繼承模型十分重要。同時,還要清楚代碼中原型鏈的長度,并在必要時結束原型鏈,以避免可能存在的性能問題。 js是一門動態(tài)語言,js沒有類的概念,ES6 新增了class 關鍵字,但只是語法糖,JavaScript 仍舊是基于原型。 至于繼承,js的繼承與java這種傳統(tǒng)的繼承不一樣.js是基于原型鏈的繼承. 在javascript里面,每個對象都有一...

    wthee 評論0 收藏0
  • js細節(jié)剖析】通過"="操作符為對象添加新屬性時,結果會受到原型上的同名屬性

    摘要:在使用的過程中,通過操作符為對象添加新屬性是很常見的操作。但是,這個操作的結果實際上會受到原型鏈上的同名屬性影響。通過它,可以做到操作符做不到的事情,比如為對象設置一個新屬性,即使它的原型鏈上已經(jīng)有一個的同名屬性。 在使用JavaScript的過程中,通過=操作符為對象添加新屬性是很常見的操作:obj.newProp = value;。但是,這個操作的結果實際上會受到原型鏈上的同名屬性...

    wemallshop 評論0 收藏0
  • 你是否理解js的Object與Function與原型

    摘要:原型對象是由創(chuàng)建的,因此原型對象的構造函數(shù)是構造函數(shù)也可以是稱為對象,原型對象也就繼承了其生父構造函數(shù)中的數(shù)據(jù),也同時繼承了原型對象的數(shù)據(jù)。當然這條原型鏈中的數(shù)據(jù),會被還是還是這類構造函數(shù)繼承,但是不會被這些繼承,他們不處于同一個鏈條上。 js中,F(xiàn)unction的本質(zhì)是什么?Object的本質(zhì)又是什么?js中有幾條原型鏈? showImg(https://segmentfault.c...

    itvincent 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<