javascript中原型和原型链的简单介绍

本篇文章给大家带来的内容是关于javascript中原型和原型链的简单介绍 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

[[Prototype]]

几乎所有对象在创建的时候都会生成[[Prototype]]链,就是人们常说的原型链,当你试图引用对象的属性时,会触发对象的[[Get]]操作,对于默认的[[Get]]操作来说,第一步就是去查找当前的对象中有没有你要引用的属性,如果有就会使用它,如果没有找到,就会去查找这个对象的原型链,举个例子:

var one = {  type: 'one'}var two = Object.create(one)console.log(two.type) // one

登录后复制

在上述例子中,two对象中并没有type属性,但是由于Object.create(创建一个新对象,带着指定的原型对象和属性)将one对象和two对象联系到一起,因此在原型链的查找过程中,即便在two对象中没有找到type属性,会继续向上查找,在one对象中查找到type属性并打印,如果沿着原型链一直向上查找都没有找到,则会打印undefined

prototype

立即学习“Java免费学习笔记(深入)”;

要讲清楚prototype是什么先举一个简单的例子:

function origin(type) {  this.type = type  console.log(this.type)}origin.prototype.name = 'origin'var son1 = new origin('male')var son2 = new origin('male')console.log(son1.name) // originconsole.log(son2.name) // origin

登录后复制

函数origin的prototype属性实际上相当与一个对象,这个对象指向实例son1和son2的原型对象,因此,当调用name属性,会沿着原型链一直向上找,输出origin.prototype.name的值,简单来说,函数的prototype对象会指向实例的原型,从另一个角度上来说,也可以说son1和son2继承了函数origin的prototype对象

constructor

先看一个简单的例子:

function origin() {}const son = new origin()console.log(origin.prototype.constructor === origin) // trueconsole.log(son.constructor === origin) // true

登录后复制

origin.prototype默认有一个公有并且不可枚举的属属性,constructor,并且这个属性引用的是对象关联的函数,因此origin.prototype.construct = origin,同时实例对象son也有一个construcor属性,指向创建这个对象的函数

_proto_

__proto__其实是一个绝大多数浏览器支持的用来访问内部原型链的一个属性

    son.__proto__ === origin.prototype // true

登录后复制

当调用son.__proto__实际上调用了son.__proto__(),返回值和Object.getPrototypeOf(origin)结果相同

以上就是javascript中原型和原型链的简单介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2738557.html

(0)
上一篇 2025年3月8日 01:52:05
下一篇 2025年3月8日 01:52:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论