几天前,我看到一个例子比较对象的实例和他们的方法返回true或false,我试图通过我自己做到这一点。我,如果我声明中对象的方法,而不是在他的原型,它必须在这个例子返回假的,但我得到真正:在这种情况下,java脚本中对象方法的比较返回false
function Foo(name, lastName) {
this.name = name,
this.lastName = lastName,
this.show = function() {
return this.name;
}
}
function Foo2(name, lastName) {
Foo.apply(this, arguments);
}
Foo2.prototype = Foo.prototype;
Foo2.prototype.constructor = Foo2;
var x = new Foo2("Peter", "Pan");
var y = new Foo2("John", "English");
console.log(x.show() === y.show());// true, why not false? it is two differed functions
当我对它们进行比较,结果是真实的,但我可以”不明白为什么? 如果我在对象内部声明属性并执行新对象,我创建了两个不同的函数,并且当我在原型中声明时,它创建了一个相等的函数。
感谢您的任何建议。
你没有比较功能,你正在比较功能返回。 – Barmar 2014-08-28 21:05:17
和我可以比较它们的功能? – Victorino 2014-08-28 21:06:10
函数调用函数后放置'()'。使用不带'()'的名称:'console.log(x.show === y.show))'。 – Barmar 2014-08-28 21:07:20