javascript - 使用原型(prototype) [javascript] 的未定义结果

标签 javascript prototype

所以我正在使用 javascript 学习原型(prototype),并尝试了一些代码:

function Employee(name) { this.name= name; }
var m = new Employee("Bob");
var working= { isWorking: true };
Employee.prototype = working; 
alert(m.isWorking);

不幸的是,我收到了未定义的消息,而不是真实值。这个结果有什么原因吗?

我做了几个测试。我得出的结论是,重新分配原型(prototype)对象会导致任何先前创建的 Employee 类实例无法访问在新分配的原型(prototype)中找到的任何属性。这准确吗?

最佳答案

更改原型(prototype)不会影响已经创建的对象。它只会影响基于该对象创建的对象。

有一个属性__proto__这可以用来改变原型(prototype),但它的实现不是必需的。 ES6 确实定义了 setPrototypeOf更改原型(prototype)的方法,但由于它仅在 ES6 中,因此支持可能会有所不同。

关于javascript - 使用原型(prototype) [javascript] 的未定义结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34148348/

相关文章:

javascript - HTML5 Canvas 性能增强

javascript - 原型(prototype)和原型(prototype)之间的区别._

user-interface - 简单应用程序/问答游戏的快速 GUI 开发

javascript - 为什么 Object.prototype instanceof Object 是假的?

javascript - 使用 Javascript 不会在 View 中调用 Controller 操作

javascript - 未捕获的语法错误 : Unexpected end of input Google Maps API

javascript - 在闭包内声明的类与没有闭包的标准类

javascript - magento bundle.js 错误

javascript - VueJS 数据属性在已安装函数中返回未定义

javascript - 数组需要根据键值对删除重复对象并返回总和 [fiddle]