gpt4 book ai didi

javascript - 对父原型(prototype)的更改为子原型(prototype)添加了属性

转载 作者:行者123 更新时间:2023-11-28 19:41:21 38 4
gpt4 key购买 nike

前言:

我有一个对象,我们称之为“A”。我通过 A.__proto__.AsDf = -1; 向其原型(prototype)添加了一个函数。现在“A”的所有子代也都有一个属性“AsDf === -1”。

我一直在阅读周围的内容,我想我明白发生了什么,但我希望得到一些确认,也许还有更多关于它如何工作的信息(假设这不是全部)。

问题:

  • 这是因为 A.__proto__ 是对象,这意味着我要添加“AsDf = -1;”到所有对象?
  • 此外,如果是这种情况,是否会按照使用除 Object 之外的原型(prototype)创建与“A”相同的新对象的方式进行操作,使其仅向其添加“AsDf”而不是其子对象? (假设所有子对象都是对象,当然不是新对象)。

最佳答案

  1. 不要通过 __proto__,而是通过 A.constructor.prototype(如果可用)或 Object.getPrototypeOf(A)
  2. 如果Object.getPrototypeOf(A) === Object.prototype,那么在此处设置属性意味着每个对象都会继承它们
  3. 您如何创建A?最好执行 A = Object.create({});,为自己提供一个可以安全使用的原型(prototype)
  4. 如果A是一个对象而不是函数,那么如何拥有它的“子级”?您的意思是 child = A.someProperty = {};
<小时/>

使用Object.create({})的示例

var A = Object.create({});
A.foo; // undefined
Object.getPrototypeOf(A).foo = 'bar';
A.foo; // "bar"
A.fizz = {};
A.fizz.foo; // undefined
// but note that because fizz was made with {} we have
Object.getPrototypeOf(A.fizz) === Object.prototype; // true
// even though we made it so that
Object.getPrototypeOf(A) === Object.prototype; // false
// i.e. the only relation between them is the property reference

关于javascript - 对父原型(prototype)的更改为子原型(prototype)添加了属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962326/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com