2016-12-21 104 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比繼承,如果你不這樣做定義兩個原型。