Javascript调用方法
Javascript call method
为什么下面的代码会输出1?
function func(){
alert(this)
}
var i = 1;
func.call(i);
因为call
的第一个参数是函数this
的值,语法是
function.call(thisArg[, arg1[, arg2[, ...]]])
如 MDN
所述
意味着作为第一个参数传递给 call
的任何内容都将在被调用函数 this
中
function func(){
alert(this)
}
func.call("test"); // alerts "test"
要传递参数,您传递一个 this
值,然后其余参数将是传递给函数的参数
function func(arg1, arg2, arg3){
alert(this); // alerts "this_value"
alert(arg2); // alerts "kitty"
}
func.call("this_value", "hello", "kitty", "cat");
apply
以相同的方式工作,但采用参数数组代替
func.apply("this_value", ["hello", "kitty", "cat"]);
定义
function.prototype.call(这个,arg1,arg2,...);
因此,当您调用 func.call
时,您传入的第一个参数将绑定到 this
变量。所以在函数 func
中,任何 this
变量都将替换为您的第一个参数 1
.
继续玩
您可以将更多参数扩展到 func
并使用更多参数调用,看看会发生什么:
function func(a,b){
alert(this + a*b);
}
func.call(1,2,3);
回想一下定义,第一个参数或 func.call
指的是 func
的 this
变量。所以你最终会 运行
alert( 1 + 2*3 );
** 参考:** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
** 进一步阅读 **
function.prototype.call
有另一个近亲 function.prototype.apply
。两个函数的第一个参数都引用 this
变量。唯一的区别是 function.prototype.apply
在数组中接受此类函数的参数。
所以
func.call(1,2,3);
你会用
来称呼它
func.apply(1,[2,3]);
玩的开心!
为什么下面的代码会输出1?
function func(){
alert(this)
}
var i = 1;
func.call(i);
因为call
的第一个参数是函数this
的值,语法是
function.call(thisArg[, arg1[, arg2[, ...]]])
如 MDN
所述意味着作为第一个参数传递给 call
的任何内容都将在被调用函数 this
中
function func(){
alert(this)
}
func.call("test"); // alerts "test"
要传递参数,您传递一个 this
值,然后其余参数将是传递给函数的参数
function func(arg1, arg2, arg3){
alert(this); // alerts "this_value"
alert(arg2); // alerts "kitty"
}
func.call("this_value", "hello", "kitty", "cat");
apply
以相同的方式工作,但采用参数数组代替
func.apply("this_value", ["hello", "kitty", "cat"]);
定义
function.prototype.call(这个,arg1,arg2,...);
因此,当您调用 func.call
时,您传入的第一个参数将绑定到 this
变量。所以在函数 func
中,任何 this
变量都将替换为您的第一个参数 1
.
继续玩
您可以将更多参数扩展到 func
并使用更多参数调用,看看会发生什么:
function func(a,b){
alert(this + a*b);
}
func.call(1,2,3);
回想一下定义,第一个参数或 func.call
指的是 func
的 this
变量。所以你最终会 运行
alert( 1 + 2*3 );
** 参考:** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
** 进一步阅读 **
function.prototype.call
有另一个近亲 function.prototype.apply
。两个函数的第一个参数都引用 this
变量。唯一的区别是 function.prototype.apply
在数组中接受此类函数的参数。
所以
func.call(1,2,3);
你会用
来称呼它func.apply(1,[2,3]);
玩的开心!