23.JavaScript原型和原型链
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了23.JavaScript原型和原型链,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1361字,纯文字阅读大概需要2分钟。
内容图文
![23.JavaScript原型和原型链](/upload/InfoBanner/zyjiaocheng/633/4d6b6807d4ca4b9e996b4d363ab03570.jpg)
1.原型:prototype,所有的函数都有一个属性prototype,称之为函数原型
默认情况下,prototype是一个普通的Object对象
默认情况下,prototype中有一个属性constructor,它也是一个对象,它指向构造函数本身
function Test(){}
Test.prototype:函数Test的原型
Test.prototype.constructor:函数Test的原型的构造函数指向Test
(Test.prototype.constructor === Test) 结果为true
2.隐式原型:__proto__,所有的对象都有一个属性__proto__,称之为隐式原型
默认情况下,隐式原型指向创建该对象的,函数的原型
function Test(){}
var test = new Test();
(test.__proto__ === Test.prototype) 结果为true
上面的test对象如何获得创建对象的构造函数名称?
test.__proto__.constructor.name
test.__proto__ === Test.prototype
test.__proto__.constructor === Test.prototype.constructor === Test
test.__proto__.constructor.name === Test.prototype.constructor.name === Test.name
如上图所示:
通过函数add创建的对象,这些对象的隐式原型都指向函数add的原型
对象1.__proto__ === 对象2.__proto__ === add.prototype
所以add.prototype是对象1和对象2的一块公共区域
3.原型链
原型链,链条的全貌:
上图中的Function特殊,是JS引擎自己产生的
Function.__proto__ === Function.prototype
Object.prototype === null
所有的函数都是通过new Function()产生的。
所以,自定义函数.__proto__ === Function.prototype
当访问一个对象的成员时: 1.?看该对象自身是否拥有该成员,如果有直接使用 2.?在原型链中依次查找是否拥有该成员,如果有直接使用
内容总结
以上是互联网集市为您收集整理的23.JavaScript原型和原型链全部内容,希望文章能够帮你解决23.JavaScript原型和原型链所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。