原型和原型链

文章讲述了JavaScript中构造函数的原型属性和实例对象的__proto__属性的关系,以及原型链的工作原理。通过给原型对象添加方法展示了如何共享实例方法。原型链允许对象在自身找不到属性或方法时,向上查找其原型,直到Object.prototype为止。
摘要由CSDN通过智能技术生成

原型

每一个构造函数都有一个原型属性(prototype),这个属性保存了构造函数创建的一类实例对象共有的方法,然而每个实例化对象都有一个__proto__属性,这个属性指向了它构造函数的原型对象(prototype)。

例如下面代码,可以给原型对象添加方法:

// 定义一个Dog对象
function Dog(){ }
// 给原型对象添加方法
Dog.prototype.run=function(){
    console.log('跑');
}
        
console.log(Dog.prototype);
// 通过new实例化对象
let d1=new Dog();
// 实例化对象的__proto__属性指向构造函数的原型(prototype)
console.log(Dog.prototype==d1.__proto__); // true

原型链

每个对象都有一个__proto__属性,这个属性指向了它构造函数的原型对象(prototype),原型对象也有一个__proto__属性,所以当我们使用对象的方法或者属性时,先在自身中找,找不到就去原型中找,原型也是一个对象,原型中找不到就去原型的原型中去找,直到找到Object.prototype为止,因为Object.prototype为null。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值