2009-09-22 122 views
0

反對,我想方法添加isBlack到汽車僅當此方法已不存在之前就已經存在。在頁面的底部,我已經通過檢查無論是在原型,並在汽車對象本身做到這一點。我想知道是否有更好的方法來處理案件。我不喜歡雙重支票。檢查如果一個方法添加一個方法在JavaScript

注意isBlack方法可能得出汽車從汽車本身或通過原型。

function Vehicle(name){ 
    this.name = name; 
}; 

Vehicle.prototype.tyres = 4; 

function Car(){} 

Car.prototype = new Vehicle(); 

Car.prototype.constructor = Car; 

if !(Car.isBlack || Car.prototype.isBlack){ 
    Car.prototype.isBlack = 'false'; 
} 
+0

你知道'Car.isBlack'和'Car.prototype.isBlack'不是互斥的嗎?你可以讓前者沒有後者定義,反之亦然。 – 2009-09-22 14:57:28

回答

0

雙重檢查可能是它會得到的。另一種選擇將被實例化一個Car和檢查isBlack在裏面,這是一個相當浪費。

1

只要你準備充分的原型路線,因此你必須創建這些使得它們可以沒有副作用(你需要做的,創建的每個實例作爲原型子的使用安全地構建-types),你可能只是測試它這樣的一個實例。

if (!(new Car()).isBlack) { 
    Car.prototype.isBlack = 'false'; 
}