Soy nuevo en la herencia de prototipos, así que estoy tratando de entender el camino "correcto". Pensé que podría hacer esto:Herencia de Prototypal: ¿Puedes encadenar Object.create?
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
var tbase = {};
tbase.Tdata = function Tdata() {};
tbase.Tdata.prototype.say = function (data) {
console.log(data);
};
var tData = new tbase.Tdata();
tbase.BicData = Object.create(tData);
tbase.BicData.prototype.say = function (data) {
console.log("overridden: " + data)
};
tbase.BicData.prototype.shout = function (data, temp) {
console.log("SHOUT: " + data + ", " + temp)
};
var test = new tbase.BicData();
tData.say("test1");
test.say("test2");
test.shout("test3", "hope");
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
var tbase = {};
tbase.Tdata = function Tdata() {};
tbase.Tdata.prototype.say = function (data) {
console.log(data);
};
var tData = new tbase.Tdata();
tbase.BicData = Object.create(tData);
tbase.BicData.prototype.say = function (data) {
console.log("overridden: " + data)
};
tbase.BicData.prototype.shout = function (data, temp) {
console.log("SHOUT: " + data + ", " + temp)
};
var test = new tbase.BicData();
tData.say("test1");
test.say("test2");
test.shout("test3", "hope");
Pero en cambio me sale "tbase.BicData.prototype no está definido"
En Java hablan, lo que quiero es tener Tdatos como repetitivo ' interfaz ', BicData para ser una implementación de eso, y luego instanciar los objetos a partir de él.
¿Dónde me estoy equivocando?
+1 He borrado mi respuesta, usted tiene razón :) – mck89
Esto se ve bien! Gracias :) – robinhowlett
Creo que la mayor parte de la confusión del OP se evitaría si el OP no hubiera mezclado 'new' y' Object.create'. Digo elegir uno y mantenerlo. –