javascript - 当我输出 p1.y 时,根据我的理解,我应该得到输出 201,因为 y 存储在 person 的原型(prototype)中。为什么我得到200?

标签 javascript

function person(){ 
  this.x = 100;
} 
person.prototype.y = 200; 

var p1 = new person(); 
var p2 = new person();

++p1.y;

console.log(p1.y);
console.log(p2.y);

当我输出 p2.y 时,根据我的理解,我应该得到输出 201,因为 y 存储在 person 的原型(prototype)中。为什么我会得到 200?

最佳答案

y is stored in prototype of person

不完全是。分配一个属性,例如 ++p1.y ( p1.y = p1.y + 1 ),在对象 p1 上创建自己的属性。 person.prototype.y属性保持值 200 。你需要做

++person.prototype.y;

更新两个实例继承的属性。

关于javascript - 当我输出 p1.y 时,根据我的理解,我应该得到输出 201,因为 y 存储在 person 的原型(prototype)中。为什么我得到200?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50428410/

相关文章:

javascript - 将 React 本地状态与 Redux 全局状态相结合

javascript - 获取模板内单选按钮的值

javascript - 导航菜单未在浏览器中呈现

javascript - JQuery - 将表单数据序列化为关联数组

javascript - Cargo Collective 传统分页

javascript - 从 JavaScript 对本地 SQLite 文件运行查询

javascript - reactjs 无法读取未定义的属性 'keys'

javascript - 在 v-for 列表项中显示和隐藏 div (Vue.js 2)

javascript - SVG方向属性的特征检测

javascript - JQUERY 的 html 函数内部国际化