Javascript對(duì)象繼承

2018-01-06 19:14 更新

Javascript面向?qū)ο笤O(shè)計(jì) - Javascript對(duì)象繼承


要在對(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"); 
}; 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)