2016-12-21 73 views
0
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 

根据原型继承,oldobj没有链接到newobj函数。但在上面的例子中,oldobj如何访问newobj的fifthm()?原型继承未按预期工作

+4

你迷惑'对象()'和'的Object.create()'? –

回答

4

这里有没有继承。甚至没有两个物体。

var newobj= Object(oldobj); 

使得newobj等于oldobj

MDN on Object

如果该值是一个对象已经,它会返回在JavaScript

原型继承做非常不同的价值。我建议你阅读this introduction

正如费利克斯·克林指出,它可能是你想要的是Object.create

var newobj= Object.create(oldobj); 

注意,这并不能使类,它更是一种instanciation比继承,如果你不这样做定义两个原型。