原型与原型链

JavaScript中,构造函数用于创建对象,其prototype属性关联着一个对象,该对象的属性和方法被构造函数实例共享。每个对象内部有一个指针指向构造函数的prototype,形成原型链。当查找对象属性时,会沿着原型链向上搜索,直到找到Object.prototype。文章通过示例展示了如何验证对象的原型关系,如`fun.__proto__===Fun.prototype`等。
摘要由CSDN通过智能技术生成

在JavaScript中是使用构造函数来新建一个对象的,每一个构造函数都有一个prototype属性,其属性值是一个对象,这个对象的中的属性和方法由该构造函数的实例(创建出来的对象)所共享。

当使用构造函数创建一个对象后,在这个对象内包含一个指针,其指向构造函数中prototype的属性值,在ES5这个指针被称为对象的原型。对象可以使用__proto__来访问其原型,但是最好不要用__proto__对原型进行访问,因为__proto__是浏览器中的属性,在ES中并没有这个规范。在ES5中给对象新增了一个getPrototype()方法,可以通过此方法来获取对象的原型。

当访问一个对象的属性时,如果这个对象中没有此属性,那个它就会再去原型对象中寻找,这个原型对象又会有一个原型对象,就这样一直找下去,这就是原型链。原型链的尽头一般都是Object.prototype,这就是为什么我们创建一些对象的时候,可以直接使用对象当中的一些方法。

function Fun(){}
let fun = new Fun()
let arr = new Array()
let obj = new Object()
console.log( fun.__proto__ === Fun.prototype );               // true
console.log( arr.__proto__ === Array.prototype );             // true
console.log( obj.__proto__ === Object.prototype );            // true
console.log( Object.getPrototypeOf(arr) === arr.__proto__ );  // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值