我是JS的新手。
我正在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(旧对象)创建一个新对象的概念:Good Parts book和从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()有什么好处。
答案 0 :(得分:2)
如果您想使用.prototype
进行继承,则需要A
和C
作为类(而不仅仅是对象)。
var A = function() {
this.name = 'h';
this.lastname = 'n';
this.address = 'B';
}
A.prototype.getname = function() {
console.log(this.name);
};
var a = new A();
console.log(a.getname()); // h
var C = function() {};
C.prototype = new A();
var c = new C();
console.log(c.lastname); // n
console.log(c.getname()); // h
使用Object.create而不是Object.prototype进行继承的一个显着优势是(可以在这里看到),使用Object.create可以使用简单对象(而不是类)。
为了更好地理解使用Object.create的优点,请参阅@ FelixKling对similar question的接受答案......