javascript - 更改原型(prototype)中的值在 JavaScript 中不起作用

标签 javascript scope prototype javascript-scope

我是 JS 新手,让我们看看下面的代码。

我想在使用 proto 时将鼠标的 legs 属性值更改为 2,但我无法更改它。我得到的输出只有 4。请帮忙这是为什么?

function Animal() {
  this.legs = 4;
}

var mouse = new Animal();

mouse.__proto__.legs = 2;
console.log(mouse.legs);

最佳答案

您不能以这种方式更改实例属性。

mouse.__proto__ 包含构造函数 Animal

如果你只想改变鼠标的腿,你必须这样做: mouse.legs = 2

如果你想改变所有 future 的动物——很遗憾你做不到。 new Animal() 将始终引用原始构造函数。

当你调用new Animal时,JS引擎没有引用Animal.prototype.constructor,它使用Animal作为构造函数函数和 Animal.prototype 作为新创建对象的原型(prototype),忽略 Animal.prototype.constructor

关于javascript - 更改原型(prototype)中的值在 JavaScript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57472120/

相关文章:

javascript - 原型(prototype)javascript混淆

javascript - 在 JavaScript 中使用高阶函数中的原型(prototype)函数

javascript - 多平台(Chrome、IE、Firefox)

ios - 如何从扩展访问变量并在 Swift 的 View Controller 中使用它

javascript - 使用 HTML 和 CSS 修复滚动页面上的横幅

javascript - 本地 Javascript 范围问题

javascript - 知道事件名称的事件处理程序

javascript - 原型(prototype)之间共享意外的值

javascript - 动画完成不称为 JavaScript DOM

javascript - Ext.form.TextField : getValue() works but setValue(. ..) 不...为什么?