JS原型链

博客介绍了JavaScript原型链,即实例化对象查找属性时,先从自身找,再到上级原型链直至Object,找不到则返回undefined。还给出原型链小例子,提醒勿向Object.prototype添加属性,以免污染全局,同时提及相关关键字及函数属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、原型链

原型链:一个实例化对象在寻找一个属性的时候,会先从自身属性寻找,其次到上级原型链,直到Object,如果还找不到就分会undefined,这就称之为原型链。

下面绿色框框的是原型链

function CreatP(n){
    this.name = n;
}
CreatP.prototype.sayHeelo = function(){
    consloe.log('Heelo!');
};
CreatP.prototype.eat = function(){
    consloe.log(this.name);
}
var a = new CreatP('小阳','18');
console.log(a);
​
/*
    1、这个时候再实例化的对象里有a.__proto__属性,
    这个属性指向了CreatP.prototype原型,也就是内存地址相同
*/
console.log(a.__proto__ == CreatP.prototype);//true
/*
    2、 这个时候,CreatP.prototype也是对象,
    所以下面也有CreatP.prototype.__proto__,而这个属性的值为Object.prototype
*/
console.log(CreatP.prototype.__proto__ === Object.prototype);//true
/*
    3、直到Object.prototype就没有__proto__的值(null)
    也就是Object是所有原型的顶端,而下面的__proto__和
    prototype链接起来的就是原型链
*/
console.log(Object.prototype.__proto__ === null);//true

 

2、原型链小例子

 

/* 构造函数没有的话,就向原型链寻找 */
function Creat(n){
}
CreatP.prototype.name = '楠楠';
var a = new CreatP();
console.log(a.name);//楠楠
​
/* 例2 向Object寻值*/
function Creat(n){
}
Object.prototype.name = '楠楠';//Object原型链
var a = new CreatP();
console.log(a.name);//楠楠

总结:永远不要向Object.prototype添加属性,因为给Object原型添加了属性,就相当于给所有的对象都添加了这个属性,污染了全局。

  • 用到的关键字:prototype(原型)、new、this

函数本身就有prototype属性,

被new后就会拥有__proto__属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒险岛_0_

您的打赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值