原型链是js中最抽象也是最难的一块知识之一 , 小编整理了一下 , 为大家讲解原型链的重要知识 , 希望对大家有所帮助 。 东西/材料 javascript
操作方式 01 【web前端:理解js原型链】进修原型链之前我们先熟悉一下机关函数 , 代码如下:
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 在这里我给大师画了一张图 , 便于大师理解原型链 。
文章插图
出格提醒 码子不易 , 小编若有说得不合错误的处所 , 望大师指点包含 , 感谢
以上内容就是web前端:理解js原型链的内容啦 , 希望对你有所帮助哦!
推荐阅读
- 如何理解C语言中指针和数组名的区别与联系
- 紫砂“手工壶”的概念,如何去理解呢
- 怎样理解哲学的基本问题
- 如何快速入门Django之理论和理解
- 图解ABP 开源 Web应用程序框架特性
- 转载 刚入门的人最好看看 [基础知识]web和ftp侍服器入侵步骤
- 怎样理解 我不是不爱你,只是我不再喜欢你了
- 关于藏茶|余香仍在,你能理解吗?
- 其作始也简 其将毕也必巨的意思的理解 其作始也简 其将毕也必巨的意思怎么理解
- 如何使用eclipse创建动态web工程