怎么看这里的 __proto__ 的表现?
__proto__
__proto__不在语言规范里。 这个是大家都实现了的一个私有属性,可以直接获取到对象的原型链上一级,和(Object/Reflect).getPrototypeOf 的返回值是一样的。 这个属性取的其实是一个内部属性叫[[Prototype]],理应不能被js直接访问到。
@chenzeZzz 答非所问…
@noe132 那用 in 能判断为 true 的表现是为啥…
https://stackoverflow.com/questions/24295785/why-is-foo-hasownproperty-proto-equal-to-false
proto 是定义在 Object.prototype 上的, 并且定义了 getter 和 setter. 所以 hasOwnProperty 是 false, in 是 true
@acfasj __proto__ emmmm下划线被去掉了
https://github.com/mqyqingfeng/Blog/issues/2
__proto__ 当构造函数的时生成对象,对象身上会有 proto 指向构造函数 prototype
至于 __proto__ in {} 的返回值,不同的JS引擎的结果可能不一样。可能是true也可能是false。 这个属性最先是firefox实现的,后来大家都实现了。 debug 的时候可以用它快速定位原型链。但实际开发最好使用getPrototypeOf。
__proto__ in {}
来自MaterialCNode
Object.defineProperty(Object.prototype, ‘proto’, { get () { return Object.getPrototypeOf(this) } })
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
__proto__不在语言规范里。 这个是大家都实现了的一个私有属性,可以直接获取到对象的原型链上一级,和(Object/Reflect).getPrototypeOf 的返回值是一样的。 这个属性取的其实是一个内部属性叫[[Prototype]],理应不能被js直接访问到。@chenzeZzz 答非所问…
@noe132 那用 in 能判断为 true 的表现是为啥…
https://stackoverflow.com/questions/24295785/why-is-foo-hasownproperty-proto-equal-to-false
proto 是定义在 Object.prototype 上的, 并且定义了 getter 和 setter. 所以 hasOwnProperty 是 false, in 是 true
@acfasj
__proto__emmmm下划线被去掉了__proto__当构造函数的时生成对象,对象身上会有 proto 指向构造函数 prototype至于
__proto__ in {}的返回值,不同的JS引擎的结果可能不一样。可能是true也可能是false。 这个属性最先是firefox实现的,后来大家都实现了。 debug 的时候可以用它快速定位原型链。但实际开发最好使用getPrototypeOf。@Lizhooh MDN文档去看。
来自MaterialCNode
Object.defineProperty(Object.prototype, ‘proto’, { get () { return Object.getPrototypeOf(this) } })