有没有一种方法可以检查功能是否不同,即使它们来自同一原型? 我之所以这样问是因为我需要将函数存储在一个数组中,而当我尝试删除其中的一个函数时,由于原型是相同的,所以它会删除所有函数。
例如,在下面的代码中,比较两个函数时,程序将返回true。
var Car = function(name) {
this.name = name;
};
Car.prototype.checkLights = function() {
// some calculation...
};
var Nissan = new Car('nissan');
var Toyota = new Car('toyota');
// this will return true even though functions came from different objects
console.log(Nissan.checkLights === Toyota.checkLights)
答案 0 :(得分:0)
对于您的要求,我还是不太清楚(通过查看代码),但是您的新对象Nissan
和Toyota
都是共享共享Car
对象的prototype
的实例
这意味着,无论您对原型的[功能/属性]所做的更改如何,都会在其他对象中得到体现。
如果您希望他们独立行事,可以这样做:-
var Car = function(name) {
this.name = name;
// add as member function
this.checkLights = function(){
// some calculation...
};
};
var Nissan = new Car('nissan');
var Toyota = new Car('toyota');
console.log(Nissan.checkLights === Toyota.checkLights); // false
现在,除非您有非常特殊的情况,否则我强烈建议您这样做,否则每次您运行
checkLights()
的构造函数时,都会创建Car
函数的新实例