导航:首页 > 编程语言 > jsapply系统函数

jsapply系统函数

发布时间:2023-03-26 23:01:31

1. js中apply和Math.max()函数的问题

Function.apply()是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以专这样去理解属:

XXX.apply是一个调用函数的方法,其参数为:apply(Function, Args),
Function为要调用的方法,Args是参数列表,当Function为null时,默认为上文,

Math.max.apply(null, arr)

可认为是
apply(Math.max, arr)
然后,arr是一个参数列表,对于max方法,其参数是若干个数,即
Math.max(a, b, c, d, ...)
当使用apply时,把所有参数加入到一个数组中,即
arr = [a, b, c, d, ...]
代入到原式,
Math.max.apply(null, [a, b, c, d, ...])
实际上等同于
Math.max(a, b, c, d, ...)
在此处,使用apply的优点是在部分JS引擎中提升性能。

2. 如何理解和熟练运用js中的call及apply

call和apply
obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);

两者作用一致,都是把尺瞎obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。绑定后会立即执行函数。
唯一区别是apply接受的是数组参数,call接受的是连续参数。
function add(j, k){
return j+k;
}

function sub(j, k){
return j-k;
}

我们在控制台运行:
add(5,3); //8
add.call(sub, 5, 3); //8
add.apply(sub, [5, 3]); //8

sub(5, 3); //2
sub.call(add, 5, 3); //2
sub.apply(add, [5, 3]); //2

调用原生对象的方法
示例:
var a = {0:1, 1:"yjc", length: 2};

a.slice(); //TypeError: a.slice is not a function

Array.prototype.slice.call(a);//[1, "yjc"]

对象a类似array,但不具备array的slice等方法。使用call绑定,这时候就可以调用slice方法。
实现继承
通过call和apply,我们可以实现对象继承。示例:
var Parent = function(){
this.name = "yjc";
this.age = 22;
}

var child = {};

console.log(child);//Object {} ,空对象

Parent.call(child);

console.log(child); //Object {name: "yjc", age: 22}

以上实现了对象孝尘的继承。
bind的使用
obj.bind(thisObj, arg1, arg2, ...);

把obj绑定到thisObj,这时候thisObj具备了obj的属性和方法。与call和apply不同的是,巧困禅bind绑定后不会立即执行。
同样是add()和sub():
add.bind(sub, 5, 3); //不再返回8
add.bind(sub, 5, 3)(); //8

如果bind的第一个参数是null或者undefined,等于将this绑定到全局对象。

3. 在JS中,call()方法和apply()方法到底该怎么应用

1.apply与call是更改对象的内部指针,即改变对象的this指向的内容;

2.call与apply的第一个参数都是要传入给当版前对象的对象,及权函数内部的this,后面的参数都是传递给当前对象的参数。

4. js数组中的apply什么意思

apply()的作用是指定函数作用域和传参,不是数组专用的
apply(作返闷旁用域对象,参数1,参数罩塌2,参漏橡数n...)

5. Javascript中call和apply的区别与详解

call和apply的详解

  1. call()方法

    用于操作this的函数方法是call(),它可以指定的this值和参数来执行函数。call()的第一个参数指定了函数执行时this的值,其后的所有参数都是需要被传入函数的参数。

  2. apply()方法

    apply()是你可以用来操作this的第二个函数方法。apply()的工作方裂者辩式和call()完全一样,但它只能接受两个参数: this 的值和一个数组或者类似数组的对肆缺象,内含需要被传入函数的参数(也就是说你可以把arguments对象作为apply()的第二个参数)。你不需要像使用call()那样一个个指嫌铅定参数,而是可以轻松传递整个数组给apply()。除此之外,call()和apply()表现得完全一样。

  3. bind()方法

    改变this的第三个函数方法是bind()。ECMAScript 5中新加的这个方法和之前那两个颇有不同。按惯例,bind()的第一个参数是要传给新函数的this的值。其他所有参数代表需要被永久设置在新函数中的命名参数。你可以在之后继续设置任何非永久参数。

call和apply的区别

资料来源:

HTML5学堂

决胜前端

6. Js中call和apply的区别和用法是什么

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别。x0dx0a先来看看JS手册中对call的解释:x0dx0acall 方法x0dx0a 调用一个对象的一个方法,以另一个对象替换当前对象。x0dx0acall([thisObj[,arg1[, arg2[, [,.argN]]]]])x0dx0a参数x0dx0athisObjx0dx0a可选项。将被用作当前对象的对象。x0dx0aarg1, arg2, , argNx0dx0a可选项。将被传递方法参数序列。x0dx0a说明x0dx0acall 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。x0dx0a 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。x0dx0a x0dx0a说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。这在面向对象的js编程过程中有时是很有用的。x0dx0ax0dx0ax0dx0acall函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。x0dx0a 运行如下代码:x0dx0ax0dx0a可见分别弹出了func和var。到这里就对call的每个参数的意义有所了解了。x0dx0ax0dx0a 对于apply和call两者在作用上是相同的,但两者在参数上有区别的。x0dx0a对于第一个参数意义都一样,但对第二个参数:x0dx0aapply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从判指仿第二个参数开始)。x0dx0a 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])x0dx0ax0dx0a同时使用apply的好处是逗祥可以直接将当前函数的arguments对象作为apply的第二个参数传入

7. js中call,apply和bind方法的区别和使用场景

在js中,所有的函复数再被调用制的时候都会默认传入两个参数,一个是this,还有一个是arguments。在默认情况下this都是指当前的调用函数的对象。但是有时候我们需要改变this的指向,也就是说使函数可以被其他对象来调用,那么我们应该怎样做呢?这时候我们就可以使用call,apply和bind方法了。
1.首先搞清楚call,apply和bind方法的来历
在js中所有的函数都是Function的实例,而且对于Function来说,它的原型即Function.prototype中含有很多东西,其中call,apply和bind方法就是Function原型中的方法,所以根据原型的规则,所有的函数都可以使用原型中属性和方法,所以来说,对于所有的函数都可以使用call,apply和bind方法。
简单一句话:call,apply和bind都是Function原型中的方法,而所有的函数都是Function的实例。

8. 如何理解和熟练运用js中的call及apply

书上都有例子,多看弊蚂看,照着打几次,就感觉出来了,
call和apply的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值,也就是把想要运行的代码的作用域拿过来。比如你有一个函数o 但是如果直接执行,因为现在在当期作用域中并没有定义函数o。而是在另外一个函数作用域中定义的,比如
Window.color=“ red“;
var o={color:“blue”};
function sayColor(){
alert(this.color);
}
sayColor();// red
sayColor(this);//咐厅red
sayColor(window);//red
sayColor(o);//blue
他们的区别仅在于接受参数的不同
首先apply()方法接受两个参数一个是在其中运行函数的作用域,另一个是参数数组,其中第二个可以是Array的实例也可以是arguments对象
对于call()方法而言,第一个参数是this值没有变化,变化的是其余参数直接传递给函数。换句话说,在使用call()方法时,传递给函数的参数必租简埋须逐个列举出来
具体可以看JavaScript高级程序设计的116页,网上有pdf版本的下载

9. 在JS中,call()方法和apply()方法到底该怎么应用

1.apply与call是更改对象的内部指针,即改变对象的this指向的内容;

2.call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。

10. 关于js中apply的用法,请帮我解释下这个什么意思

call 和apply都可以切换函数执行的上下文。
只不过apply的第二个参数支持数组,而call支持多个参数。
这个语法在红皮书里有讲。

阅读全文

与jsapply系统函数相关的资料

热点内容
u盘文件给删了 浏览:737
vuejsoauth2 浏览:78
2017微信支付日 浏览:81
机械臂编程如何开发 浏览:21
标书U盘PDF文件要不要签字 浏览:222
ps软件文件复制到d盘 浏览:148
一般工业固废招标文件内容 浏览:583
网站建设报价怎么算 浏览:66
三星a7000升级安卓502 浏览:486
word2010清除分隔符 浏览:781
乐视怎么切换网络 浏览:425
cad打印pdf文件名称与cad不一致 浏览:815
电气与可编程控制是什么 浏览:67
文件名中允许使用英文竖线吗 浏览:531
编程猫在哪里 浏览:775
win8共享文件夹访问权限 浏览:380
cad文件显示为只读不能保存怎么办 浏览:703
如何在系统里忘记网络 浏览:24
中小企业出口数据在哪里找 浏览:715
win8和xp传文件 浏览:75

友情链接