有很多問題和答案涵蓋了這種技術,但我似乎無法找到所需的this
上下文爲call()或apply()設置。如何在Array.prototype.slice.call(參數)中設置'this'上下文
我明白
Array.prototype.slice.call(arguments)
是有點相當於
arguments.slice()
與arguments
被轉換成一個適當的數組對象,但如果我嘗試使用這個約定,我自己對象不起作用。我試着寫一個小的測試這樣做:
var Logger = function(){};
Logger.prototype.print = function(msg){
console.log ((new Date()).getTime().toString() + msg);
};
(function(){
var o = {
name: "Hi Bob!",
};
var l = new Logger();
l.print(o.name); //works fine
Logger.prototype.print.call(o.name); //calls print method, but 'msg' is undefined
}());
是否有可以Array.prototype
或arguments
對象,允許該功能的應用程序沒有必要的情況下工作,有些特別的問候?
不,只有你的代碼「有點相當於」'o.name.print()' - 這顯然不是你想要的。有關它的工作方式,請參閱http://stackoverflow.com/q/6763555/1048572。 – Bergi 2013-03-18 16:07:57