Js中prototype、[[prototype]]和__proto__的区别和用法

一.显式原型&隐式原型 显式原型:prototype 隐式原型:proto

1.1 Important __proto__是每个对象都具有的属性 prototype是Function独有的属性

1.2 Tips 对象的隐式原型的值为其对应构造函数的显式原型的值 fn.proto === Function.prototype 函数的prototype属性是定义时自动添加的。默认为{} 对象的__proto__属性是创建对象时自动添加的,默认值为其构造函数的prototype Object.prototype.proto === null

1.3 说了这么多和[[prototype]]有什么关系? 其实[[prototype]]和__proto__意义相同,均表示对象的内部属性,其值指向对象原型。前者在一些书籍、规范中表示一个对象的原型属性,后者则是在浏览器实现中指向对象原型。

二.作用

作用方面来讲当然是实现继承了。其中最经典的共享属性方法的原型链继承。其中必不可少的属性就是__proto__和prototype。

我们举个栗子

function Son(){}
function Father(){}
Son.prototype = new Father();

如此即实现了继承 我们可以写代码进行验证

Foo.prototype.__proto__ === Bar.prototype  //true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值