几句话说明白JavaScript原型链

这篇博客探讨了JavaScript中的原型链概念,它是实现继承的基础。每个实例都有__proto__属性指向构造函数的prototype。文章指出,虽然ES6引入了class,但原型链仍然是核心。示例中展示了class与function的差异,强调了class更推荐用于实例化。总结来说,了解原型链对于JavaScript开发者至关重要,但ES6的class和extends提供了更简洁的继承方式。
摘要由CSDN通过智能技术生成

试着几句话说明白原型链。

JavaScript中的原型链是用于实现面向对象中的继承。JavaScript所有实例都有一个__proto__属性记载了自己的创建原型。这个值是谁写入的呢?是由实例的构造函数写入的,构造此实例的function的函数有一个属性叫 prototype。每次创建实例的时候,就把prototype赋值给实例的__proto__。

function a (){
  console.log(a.prototype);
}

let s = new a();
console.log(s.__proto__);
console.log(s.__proto__ === a.prototype)

唯一有点怪的是,javascript中所有的function都有可能是构造函数,而class中的constructor函数才有prototype。所以不能用class的其他function创建实例。

class F{
  constructor(){
    this.i = 0;
  }
}
 

 //const handle1 = new F.add(); //不允许
 const handle2 = new F();
 console.log(handle2.__proto__);// F()
 console.log(handle2.prototype);//undefined

总的来说新的ES6标准还是希望大家用class 和 extends 的,原型链看明白就行了,不用过于纠结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值