两者都在同一个函数中调用相同的函数,那么这些语句之间的区别是什么。
this.subject.hello();
apply()用于在不同的上下文中调用该方法。但是在这里它被称为相同的背景。
this.subject.hello.apply(this.subject, arguments)
答案 0 :(得分:2)
第一个调用它没有参数。第二个用当前函数的参数调用它。
this.subject = {
hello: function() {
console.log("Hello called with arguments " + JSON.stringify(arguments));
}
};
function callHello() {
console.log("this.subject.hello();");
this.subject.hello();
console.log("this.subject.hello.apply(this.subject, arguments);");
this.subject.hello.apply(this.subject, arguments);
}
callHello(1, 2);
// => this.subject.hello();
// Hello called with arguments {}
// this.subject.hello.apply(this.subject, arguments);
// Hello called with arguments {"0":1,"1":2}
答案 1 :(得分:0)
唯一的区别是,在第一次通话中,你没有传递任何参数。
答案 2 :(得分:0)
使用User
我们可以更改方法的上下文,通常它需要当前对象的上下文。 context作为第一个参数是apply方法传递,其他参数在数组中传递,该数组是apply方法中的第二个参数。
您可以参考的apply
和call
之间的其他查询
Stackoverflow question : What is the difference between call and apply?
答案 3 :(得分:0)
唯一的区别是一个xuri += sprintf( "http://%s", r->hostname );
而另一个没有。
答案 4 :(得分:0)
以下是var prevVal;
$('#hall').on('focus', function (){
prevVal=$( "#hall:selected" ).text();
});
$('#hall').on('change', function (){
if(prevVal=$( "#hall:selected" ).text()){
alert('same val selected');
}
});
,apply
和JavaScript上下文主题的一些很棒的答案: