JS 原型对象,以及 __proto__ 和 prototype

默认分类 · 2021-10-09

\_proto_ 和 prototype 的区别

  • prototype 是一个静态属性,是函数所独有的
  • \_proto_ 是一个非法属性(虽然可以用,严重不建议),他访问到在是实例对象的属性[[prototype]]的值

\_proto_ 和 prototype 的指向

两者都指向自身的原型对象

简单示例

var Fun = function(){}
var fff = new Fun()
fff.__proto__ === Fun.prototype // true

Fun.prototype.name="www"
fff.name // www

其他注意

\_proto_ 是一个非法在属性,是浏览器厂商自己实现的,并非js标准,自己玩玩可以,但是不要在业务代码中使用。

如果要获取一个实例对象的原型,请使用:Ojbect.getPrototypeOf(obj)

Ojbect.getPrototypeOf(fff) === Fun.prototype // true
js
Theme Jasmine by Kent Liao