我是JS的新手。在Javascript中使用創建vs原型
我在JSFiddle中進行了實驗。
我創建了一個對象A,然後創建了兩個新的對象B和C,如下所示。
debugger;
var A = {
name:"h",
lastname:'n',
address:'B'
};
A.getname = function()
{
console.log(this.name);
};
var B = Object.create(A);
var C=new Object();
C.prototype = A;
console.log(B.lastname);
console.log(C.lastname);
A.getname();
B.getname();
C.getname();
我已使用從JavaScript的Object.create(舊物)已有對象創建新對象的概念:好零件手冊,並從http://www.codecademy.com/courses/objects-ii/3/3?curriculum_id=506324b3a7dffd00020bf661繼承對象的概念。
調試後, 但我的值console.log(C.lastname)是未定義的,並且C.getname()給我錯誤。
TypeError: C.getname is not a function
爲什麼它會引發錯誤,在這種情況下使用Object.create()有什麼優勢。
也許使用'Object.create'的是,它的工作,的優勢,而你的'.prototype'代碼纔不是? – Bergi
但是我認爲你實際尋找的答案是'Object.create'就是你用來從現有對象繼承的東西,而'function C(){}; C.prototype = A;'和'var c = new C(); c.lastname; c.getname()'具有執行代碼來初始化實例的優點。 – Bergi
@Bergi我相信問題(其中包括)在這裏'C.prototype = A;'他所引用的原型不是他所需要的。 'C.constructor.prototype'是他正在尋找的。 (我不推薦) –