比方說,我有一個對象具有返回對象本身的方法。在JavaScript中返回對象
var mystate = {
init: function() {
return this;
},
run: function() {
console.log("!");
}
}
然後我運行此代碼: 「!」
var status = mystate.init();
mystate.run();
status.run();
在Firefox這樣做打印兩在控制檯的跡象,但不知何故,在Chrome它打印的第一個,但我得到一個錯誤,
Uncaught TypeError: Object [object Object] has no method 'run'
當它運行status.run()
似乎狀態是不確定的,當我在Chrome運行status.run()
,但不是在Firefox瀏覽器。
那麼......爲什麼是這樣,我怎麼能讓一個對象返回自己?
不能說'return this;',因爲'this'指向'window'對象 – Mouseroot
我在Windows 7的Chrome版本33.0.1750.117 m上運行,它似乎按預期工作。你使用的是什麼版本的Chrome? http://jsfiddle.net/KpfWh/ – Mathias
@Mouseroot這是不對的。在作爲對象成員的函數中,'this'確實指向對象。見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/這個#As_an_object_method – Nevett