在某些情況下,此代碼有效。如果它返回console.log
那麼致電p.out
功能就好了。如何返回內置函數作爲對象屬性?
function Notice(mode) {
this.debug = mode;
this.out = (function() {
if(mode) {
if(window.console) {
return console.log;
} else {
return alert;
}
} else {
return Notice.doNothing;
}
})(mode);
}
var p = new Notice('1');
p.out('Kool-aid, OH YEAH!');
然而,當它返回警報(或window.alert)我得到一個錯誤:
Error: uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: http:// .. :: <TOP_LEVEL> :: line 22" data: no]
而作爲一個簡單的測試,這個工程:
out = (function() { return alert; })();
out('hello dolly');
我怎麼能當obj.out設置爲alert時,它會正常運行嗎?
您的例子不工作在FF例外。 – 2010-02-03 09:45:41
什麼版本?這個錯誤是從FF3.5 - 最高的例子有錯誤,而不是底部的兩個班輪。 – Stomped 2010-02-03 09:48:37
它在IE 8中也能正常工作...... – RameshVel 2010-02-03 09:52:30