web前端:理解js原型链

2022-01-18T22:53:58头条经验
工具/材料
javascript
操作方法
- 01
学习原型链之前我们先认识一下构造函数,代码如下:
function S() {
this.name = 'xxx';
this.say = function() { console.log(this.name) }
}
var s1 = new S();
其中,s1是S的实例,s1的__proto__(大家先不用管__proto__属性,后续会讲到)中有一个constructor(构造函数)属性,该属性指向S。
在这里,大家可以记住两点:
1.s1是构造函数S的实例;
2.s1.__proto__.constructor===S 也可以写成 s1.constructor===S; - 02
接下来我们来看下一段代码:
function S2() {}
S2.prototype.name = 'XXX';
S2.prototype.say = function() {
console.log(this.name);
}
var s2 = new S2();
var s3 = new S2();
console.log(s2.sayName === s3.sayName);//true
console.log(s2.__proto__===S2.prototype);//true
这一段代码中我们可以看到一个新属性——prototype,这是什么呢,其实这就是构造函数S2的原型对象,每个对象都有__proto__属性,但是只有函数对象才有prototype属性。而s2是构造函数S2的实例,而s2.__proto__指向的就是S2的原型对象,即s2.__proto__===S2.prototype。得到一个结论,实例的__proto__属性指向的就是其构造函数的原型对象。 - 03
继续上一步的代码,我们添加代码继续调试:
console.log(s2.__proto__);//返回S2的原型对象
console.log(S2.prototype);//返回S2的原型对象
console.log(s2.__proto__.__proto__);//返回Object对象
console.log(S2.prototype.__proto__);//返回Object对象
console.log(s2.__proto__.__proto__.__proto__);//返回null
console.log(S2.prototype.__proto__.__proto__);//返回null
其实,S2的原型对象上还有原型对象,因为S2的原型对象也相当于只是Object对象的一个实例。 - 04
在这里我给大家画了一张图,便于大家理解原型链。
特别提示
码子不易,小编如有说得不对的地方,望大家指点包含,谢谢
相关经验推荐
- Q小说看多了有什么坏处?
- Q那样ape是什么格式
- Q有啥十大最热门世界编程语言排行榜
- Q这个scratch3.0怎么编植物大战僵尸
- Q说明Codeblocks如何使用
- Q有没有HTML网页制作 插入图片
- Q有了解输入一个三位正整数,要求其输出对应的逆序数
- Q告知思维导图解读昆虫记
- Q回答下用Java语言从键盘中输入内容
- Q在哪里java 学习路线
- Q专栏如何解决 另一个程序正在运行中此操作无法完成
- Q哪有网络和共享中心打不开怎么办
- Q请问数位板没有压感的解决方法
- Q那些微信越是发语音的人学历越低?学历高的人就从来不发语音吗?
- Q那儿PPT2016怎么录制屏幕视频,保存录制视频
- Q那样AE怎么做打字效果?
- Q阐述CAD如何同时延长两条直线并且相交
- Q这样ACAP是什么AI芯片架构
- Q有知道AI技术什什么?AI技术的市场前景有多大?
- Q有哪些百度糯米如何注册商家
- Q告诉JAVA编程不得不看的几本经典书籍
- Q有啥微博桌面提示网络异常请重新登录解决办法
- Q那么怎样创建数据透视表?
- Q华为备忘录怎么开启速记功能
- Q糖醋排骨不够甜怎么补救
- Q各省上缴中央税收排名是怎样的?
- Q瘴气是怎么形成
- Q香肠晾晒几天可以吃?
- Q怎样查看行程码和健康码
已有 2727798 位网友注册
已帮助 111090 人解决了问题