幾天前,我看到一個例子比較對象的實例和他們的方法返回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