检查如果一个方法添加一个方法在JavaScript

问题描述:

反对,我想方法添加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

双重检查可能是它会得到的。另一种选择将被实例化一个Car和检查isBlack在里面,这是一个相当浪费。

只要你准备充分的原型路线,因此你必须创建这些使得它们可以没有副作用(你需要做的,创建的每个实例作为原型子的使用安全地构建-types),你可能只是测试它这样的一个实例。

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