要在對(duì)象之間添加繼承,指定什么對(duì)象應(yīng)該是新對(duì)象“s [[Prototype]]。
要在對(duì)象之間添加繼承,指定什么對(duì)象應(yīng)該是新對(duì)象“s [[Prototype]]。...
我們可以使用Object.create()方法顯式指定[[Prototype]]。
我們可以使用Object.create()方法顯式指定[[Prototype]]。...
第一個(gè)參數(shù)是在新對(duì)象中用于[[Prototype]]的對(duì)象。
第一個(gè)參數(shù)是在新對(duì)象中用于[[Prototype]]的對(duì)象。...
以下代碼顯示了如何在對(duì)象之間創(chuàng)建繼承。
var book1 = {
name : "Javascript",
writeLine : function() { //from w w w . j a va2s . c om
console.log(this.name);
}
};
var book2 = Object.create(book1, {
name : {
configurable : true,
enumerable : true,
value : "CSS",
writable : true
}
});
book1.writeLine(); // outputs "Javascript"
book2.writeLine(); // outputs "CSS"
console.log(book1.hasOwnProperty("writeLine")); // true
console.log(book1.isPrototypeOf(book2)); // true
console.log(book2.hasOwnProperty("writeLine")); // false
上面的代碼生成以下結(jié)果。
要訪問(wèn)超類(lèi)型方法,我們可以直接訪問(wèn)超類(lèi)型的方法原型并使用call()或apply()在子類(lèi)型對(duì)象上執(zhí)行方法。
function Rectangle(length, width) {
this.length = length; /*from w w w .ja v a2 s . com*/
this.width = width;
}
Rectangle.prototype.getArea = function() {
return this.length * this.width;
};
Rectangle.prototype.toString = function() {
return "[Rectangle " + this.length + "x" + this.height + "]";
};
// inherits from Rectangle
function Square(size) {
Rectangle.call(this, size, size);
}
Square.prototype = Object.create(Rectangle.prototype, {
constructor : {
configurable : true,
enumerable : true,
value : Square,
writable : true
}
});
// call the supertype method
Square.prototype.toString = function() {
var text = Rectangle.prototype.toString.call(this);
return text.replace("Rectangle", "Square");
};
更多建議: