Как я наследовался с Object.create ()? Я попробовал их, но ни один не работает:
var B = function() {};
var A = function() {};
A = Object.create(B);
A.prototype.C = function() {};
и
var B = function() {};
var A = function() {};
A.prototype.C = function() {};
A = Object.create(B);
и
var B = function() {};
A = Object.create(B);
var A = function() {};
A.prototype.C = function() {};
Ничто не работало. Как я, как предполагается, использую этот новый Object.create () - функция?
Object.create()
используется для наследования объектов, а не конструкторов, как вы пытаетесь сделать. Он практически создает новый объект со старым объектом в качестве его прототипического родителя.
var A = function() { };
A.prototype.x = 10;
A.prototype.say = function() { alert(this.x) };
var a = new A();
a.say(); //alerts 10
var b = Object.create(a);
b.say(); //alerts 10
b.x = 'hello';
b.say(); //alerts 'hello'
И чтобы убедиться, что b не является просто клоном a,
a.x = 'goodbye';
delete b.x;
b.say(); //alerts 'goodbye'
Исходная документация для Object.create Дугласа находится здесь http://javascript.crockford.com/prototypal.html . Убедитесь, что вы включили определение метода
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
Вы можете определить Object.create самостоятельно, но если он не является родным, вам придется иметь дело с его перечислением в каждом цикле for in, который вы используете для объектов.
Пока что только новые веб-наборы - Safari5 и Chrome изначально поддерживают его.
Вы можете найти полезную информацию о наследовании JavaScript в Центре разработки Mozilla.