this
この手法については多くの質問と回答がありますが、call() または apply() に必要なコンテキストがどのように設定されるかについての回答が見つからないようです。
という事は承知しています
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