web前端:理解js原型链

长沙人才市场2022-06-21  4

web前端:理解js原型链 工具/材料

java描述语言

操作方法 01

在学习原型链之前,我们先了解一下构造函数。代码如下:

functions s(){
this . name = ' XXX apos;;
this . say = function(){ console . log(this . name)}
}
var S1 = new S();

其中s1是S的实例,s1的__proto__中有一个constructor属性(先不要管__proto__属性,后面再说),它指向S.

在这里,你可以记住两件事:
1.s1是构造函数S的实例;
2。S1。_ _ proto _ _。constructor = = s也可以写成S1 . constructor = = = S;

02

接下来,我们来看下一段代码:

functions 2(){ }
S2 . prototype . name = ' XXX apos;;
S2 . prototype . say = function(){
console . log(this . name);
}

var s2 =新S2();
var s3 =新S2();
console . log(S2 . say name = = = S3 . say name);//true
console.log(s2。_ _ proto _ _ = = = S2 . prototype);//true

在这段代码中,我们可以看到一个新的属性——prototype。这是什么?事实上,这是构造者S2的原型对象。每个对象都有_ _ prototype _ _属性,但只有函数对象有prototype属性。
s2是构造函数S2的一个实例,S2。__proto__指向S2的原型对象,即S2。_ _ proto _ _ = = s2.prototype.
得出结论,实例的_ _ proto _ _属性指向其构造函数的prototype对象。

03

继续前面的代码,我们添加代码以继续调试:

console.log (s2。_ _ proto _ _);//返回S2
console.log的原型对象(S2 . prototype);//返回S2

console.log (S2)的原型对象。_ _ proto _ _。_ _ proto _ _);//返回对象Object
console . log(S2 . prototype . _ _ prototype _ _);//返回Object Object

console . log(S2。_ _ proto _ _。_ _ proto _ _。_ proto _ _);//返回null
console . log(S2 . prototype . _ _ proto _ _。_ _ proto _ _);//return null

其实S2的prototype对象上是有prototype对象的,因为S2的prototype对象只相当于object对象的一个实例。

04

这里我给你画个图,让你了解一下原型链。

特别提示

代码不容易。如果边肖有什么不对的地方,请指出并包括进来。谢谢你。

转载请注明原文地址:https://juke.outofmemory.cn/read/399694.html

最新回复(0)