比方说,我有一个对象具有返回对象本身的方法。在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