JavaScript的原型链
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript的原型链,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1146字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript的原型链](/upload/InfoBanner/zyjiaocheng/796/adcaee1e0d194a61ad08f771b90e4fa7.jpg)
我正在学习JavaScript中的原型链并编写了一个演示,但我无法理解结果.
这是我的演示:
function A(){}
const c = new A();
A.prototype.sex = "girl";
A.prototype={
name:"q",
age:12
};
console.log(A.prototype.name);
console.log(c.name);
console.log(c.sex);
这是输出:
"q"
undefined
"girl"
为什么console.log(c.name)输出未定义?
解决方法:
A是你的构造函数,这意味着当你“初始化”它时,你在新创建的对象上输入你需要的所有东西
在你的情况下,你什么都不做.
构造函数有一个prototype属性,它是由新A()创建的所有对象都将继承的对象
如果你没有明确地将原型设置为构造函数,那么默认情况下你的原型是一个空对象.
所以在那一行:const c = new A(); c继承一个空对象
当你设置:
A.prototype.sex = "girl";
你正在空对象上创建一个属性,并为它指定“女孩”
但是这个对象与你做“新”之前是一样的(相同的参考).所以c仍然有一个参考
但是当你这样做时:
A.prototype={
name:"q",
age:12
};
你改变了A的原型,你改变了A.prototype的引用,但你不再使用new了.所以实际上没有任何对象
{
name:"q",
age:12
}
作为原型. c仍然将前一个对象(记住空的)对象作为原型.
但是如果你这样做:const d = new A()那么,d.name将会存在,但是d.sex不存在
像你一样改变原型(指定对A.prototype的另一个引用)只会影响A.prototype,而不会影响那些在实现之前已经“实例化”的对象.
内容总结
以上是互联网集市为您收集整理的JavaScript的原型链全部内容,希望文章能够帮你解决JavaScript的原型链所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。