javascript - 原型(prototype)继承未按预期工作

标签 javascript javascript-inheritance

var oldobj = {
  firstm: function () { console.log("firstm"); },
  secondm: function () { console.log("secondm"); }
};

var newobj= Object(oldobj);

newobj.thirdm = function () { console.log("thirdm"); };

oldobj.fourthm = function () { console.log("4thm"); };

newobj.fifthm = function () { console.log("5thm"); };

oldobj.fifthm(); // logs "5thm" in console

根据原型(prototype)继承,oldobj 与 newobj 函数没有链接。但在上面的例子中,oldobj 是如何访问 newobj 的 Fifthm() 的呢?

最佳答案

这里没有继承。甚至没有两个对象。

var newobj= Object(oldobj);

使newobj等于oldobj

来自MDN on Object :

If the value is an object already, it will return the value

JavaScript 中的原型(prototype)继承的方式非常不同。我建议您阅读this introduction .

正如 Felix Kling 所指出的,您想要的可能是 Object.create :

var newobj= Object.create(oldobj);

请注意,这不会创建类,如果您不定义两个原型(prototype),它更像是一种实例化而不是继承。

关于javascript - 原型(prototype)继承未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257092/

相关文章:

javascript - 原型(prototype)继承上的 JS Getters/Setters

javascript - 使用 AngularJS 按字母顺序对用户输入进行排序

javascript - 我如何检测 :before pseudo-elements with javascript? 上的 CSS Transition 支持

javascript - 解析 JQuery 中的值?

javascript - 为什么在 JavaScript 数组方法中绑定(bind)回调比使用 thisArg 更好?

javascript - 与 Javascript 继承的混淆

javascript - Node.js 集群在所有 8 个进程上重复相同的任务

javascript - 扩展 native 类型的 ES6 类使 instanceof 在某些 JavaScript 引擎中表现异常?

javascript - 理解 typescript 生成的 __extends 函数?