如何检查原型功能是否不同

时间:2019-05-20 12:28:46

标签: javascript comparison prototype

有没有一种方法可以检查功能是否不同,即使它们来自同一原型? 我之所以这样问是因为我需要将函数存储在一个数组中,而当我尝试删除其中的一个函数时,由于原型是相同的,所以它会删除所有函数。

例如,在下面的代码中,比较两个函数时,程序将返回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) 

1 个答案:

答案 0 :(得分:0)

对于您的要求,我还是不太清楚(通过查看代码),但是您的新对象NissanToyota都是共享共享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函数的新实例