有很多问题和答案涵盖了这种技术,但我似乎无法找到如何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