Mozilla官方
网站的调用()是:
复制代码代码如下所示:
调用()
方法在使用指定的这个值和几个指定
参数的前提下减少
函数或方法的使用。
调用()语法
复制代码代码如下所示:
fun.call(thisarg { { {,arg1,arg2,} } }…)
调用()参数
thisarg
复制代码代码如下所示:
此值指定当乐趣的
功能运行。请注意,指定这是不一定的功能时,真正的价值的价值,如果这个函数不是严格的
模式,被指定为未定义的值将被自动定向到全局对象(
浏览器窗口对象,和初始值)的原始值(数字,字符串,布尔值,该值)将指向的全自动包装的原始值的对象。
arg1,arg2,…
复制代码代码如下所示:
指定的参数列表。
Javascript中的调用()方法
不注意上面的复杂解释,循序渐进。
调用()方法的一个示例
所以我写了另一个你好,世界:
复制代码代码如下所示:
函数
打印(P1,P2){
console.log(P1 + + P2);
}
打印()
print.call(undefined,你好
两种方法具有相同的输出,但是,与调用方法相比,也出现了未定义的
情况。
那么,让我们看另一个例子。
复制代码代码如下所示:
Var(obj =功能){ };
函数打印(P1,P2){
console.log(P1 + + P2);
}
print.call(obj,你好
在这里,或者一个未定义的我们传递,因为一个未定义的例子,因为要传递一个参数。这并不能真正反映调用的用法,并且看一个更好的例子。
复制代码代码如下所示:
函数打印(名称){
console.log(this.p1 + +,P2);
}
varhello
h.print(FD);
varhello
print.call(H2,什么);
电话是用来调用其他人的方法和对象,正如他们自称,h.print,当函数被调用的方法,这将指向相关的对象。只有在这种情况下,我们看不出H2已经打印,或打印称为H2,Mozilla的一个例子引用
复制代码代码如下所示:
功能产品(名称,价格){
this.name =名称;
this.price =价格;
如果(价格<0)
把RangeError('cannot
创建产品+姓名+与负价);
返回此;
}
功能食品(名称,价格){
product.call(这个名称,价格);
this.catery = 'food;
}
food.prototype =新产品();
VaR奶酪=新的食品('feta ',5);
console.log(奶酪);
在这里,我们可以看到,方法是通过对象调用。在这个例子中,由食品构造函数创建对象实例将自己的name
属性和价格属性添加到产品的构造函数,但catery属性在各自的构造函数定义。
复制代码代码如下所示:
函数打印(名称){
console.log(this.p1 + +,P2);
}
函数(否){
this.p1 =你好;
this.p2 =世界;
(这print.call,什么);
};
(H2);
这里的H2调用函数打印作为接收器,就像在食物示例中,在子构造函数中,可以通过调用父构造函数的调用方法实现继承。
至于调用方法的优点,它是在有效Javascript中引入的。
1。使用调用方法自定义接收器调用函数。
2。使用调用方法可以调用给定对象中不存在的方法。
三.使用调用方法可以定义一个高阶函数,允许
用户将接收者指定到回调函数中。