JS里面 方法.call()是什么?
改变执行上下文,相应的还有apply,bind
一个obj对象,有log方法和foo属性
var obj = {log: function() {console.log(this.foo);},foo: 'foo'};
//可以直接打印obj的fooconsole.log(obj.foo);//或者调用obj的log方法打印obj.log();
现在有了一个temp对象,也有foo属性var temp = {foo:'bar'};
通过bind,apply,call,使用obj的log方法打印temp对象里的属性,切换上下文。obj.log.bind(temp)();obj.log.apply(temp);obj.log.call(temp);
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
同apply类似,唯一区别是:
apply()把参数打包成Array再传入;call()把参数按顺序传入。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
改变执行上下文,相应的还有apply,bind
一个obj对象,有log方法和foo属性
var obj = {
log: function() {
console.log(this.foo);
},
foo: 'foo'
};
//可以直接打印obj的foo
console.log(obj.foo);
//或者调用obj的log方法打印
obj.log();
现在有了一个temp对象,也有foo属性
var temp = {
foo:'bar'
};
通过bind,apply,call,使用obj的log方法打印temp对象里的属性,切换上下文。
obj.log.bind(temp)();
obj.log.apply(temp);
obj.log.call(temp);
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
同apply类似,唯一区别是:
apply()把参数打包成Array再传入;
call()把参数按顺序传入。