當前位置:妙知谷 >

遊戲數碼 >IT技術 >

web前端:理解js原型鏈

web前端:理解js原型鏈

工具/材料

javascript

操作方法

學習原型鏈之前我們先認識一下構造函數,代碼如下:

function S() {
= 'xxx';
= function() { () }
}
var s1 = new S();

其中,s1是S的實例,s1的__proto__(大家先不用管__proto__屬性,後續會講到)中有一個constructor(構造函數)屬性,該屬性指向S。
在這裏,大家可以記住兩點:
1.s1是構造函數S的實例;
2.s1.__proto__tructor===S 也可以寫成 tructor===S;

web前端:理解js原型鏈

接下來我們來看下一段代碼:

function S2() {}
= 'XXX';
= function() {
();
}

var s2 = new S2();
var s3 = new S2();
(ame === ame);//true
(s2.__proto__===otype);//true

這一段代碼中我們可以看到一個新屬性——prototype,這是什麼呢,其實這就是構造函數S2的原型對象,每個對象都有__proto__屬性,但是隻有函數對象才有prototype屬性。而s2是構造函數S2的實例,而s2.__proto__指向的就是S2的原型對象,即s2.__proto__===otype。得到一個結論,實例的__proto__屬性指向的就是其構造函數的原型對象。

web前端:理解js原型鏈 第2張

繼續上一步的代碼,我們添加代碼繼續調試:

(s2.__proto__);//返回S2的原型對象
(otype);//返回S2的原型對象

(s2.__proto__.__proto__);//返回Object對象
(otype.__proto__);//返回Object對象

(s2.__proto__.__proto__.__proto__);//返回null
(otype.__proto__.__proto__);//返回null

其實,S2的原型對象上還有原型對象,因為S2的原型對象也相當於只是Object對象的一個實例。

web前端:理解js原型鏈 第3張

在這裏我給大家畫了一張圖,便於大家理解原型鏈。

web前端:理解js原型鏈 第4張

特別提示

碼子不易,小編如有説得不對的地方,望大家指點包含,謝謝

標籤: web js 前端
  • 文章版權屬於文章作者所有,轉載請註明 https://miaozhigu.com/sm/itjishu/d3kr2.html