和call()方法的区别
发布时间:2025-05-23 13:43:43 发布人:远客网络
一、和call()方法的区别
apply和call方法定义及apply和call方法的区别
apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call,
apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
call方法可以用来代替另一个对象调用一个方法。call方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj指定的新对象。
如果没有提供 thisObj参数,那么 Global对象被用作 thisObj。
语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
如果 argArray不是一个有效的数组或者不是 arguments对象,那么将导致一个 TypeError。
如果没有提供 argArray和 thisObj任何一个参数,那么 Global对象将被用作 thisObj,并且无法被传递任何参数
call, apply作用就是借用别人的方法来调用,就像调用自己的一样.
apply:最多只能有两个参数——新this对象和一个数组
argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。如果 argArray
不是一个有效的数组或者不是 arguments对象,那么将导致一个 TypeError。如果没有提供 argArray和 thisObj
任何一个参数,那么 Global对象将被用作 thisObj,并且无法被传递任何参数。
call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj参数,那么 Global对象被用作 thisObj。
更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)对应的apply写法为:
func.apply(func1,[var1,var2,var3])
console.log(a.add.call(b));//b.n+b.m=7
//通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。
animal.showName.call(cat,",");
animal.showName.apply(cat,[]);
二、jscallback
js中callback是什么呢?不知道的小伙伴来看看小编今天的分享吧!
一个被当做参数的函数,即为回调函数。
在JS中万物皆为对象。函数本身也是一个对象,既然是对象,所以函数当然可以当做函数的参数。
如上述代码,fun函数就是一个对象。
上述代码中,fun2做为fun1的参数,fun2即为回调函数。
几乎所有的第三方函数我们都无法修改函数的内部实现,比如数组的forEach,map等。那么我们也就无法在这样的函数体中,调用自己所写的功能模块。所以此时,回调函数就提供了这样的能力,使我们可以将自己所书写的函数传入第三方函数中,从而实现完整的功能。
通过冒泡排序,来展示回调函数的使用方式。
函数bubbleSort拥有一个参数callBack,而smallToLarge与LargeTosmall均为回调函数,当我们在bubbleSort函数调用时,传入smallToLarge与LargeTosmall就可以非常方便的控制排序的规则。
以上就是小编今天的分享了,希望可以帮助到大家。
三、js中的$()的用法
1、$()可以是$(expresion),即css选择器、Xpath或html元素,也就是通过上述表达式来匹配目标元素。
比如:$("a")构造的这个对象,是用CSS选择器构建了一个jQuery对象——它选择了所有的<a/>这个标签。如:$("a").click(function(){...})
就是在点击页面上的任何一个链接时的触发事件。确切地说,就是jQuery用<a/>这个标签构建了一个对象$("a"),函数 click()是这个jQuery对象的一个(事件)方法。
2、$()可以是$(element),即一个特定的DOM元素。如常用的DOM对象有document、location、form等。如这样一行代码:$(document).find("div>p").html());
$()中的document是一个DOM元素,即在全文寻找带<p>的<div>元素,并显示<p>中的内容。
3、$()可以是$(function),即一个函数,它是$(document).ready()的一个速记方式。如常见的形式是这样的:
说到this,就不得不提到function,正是由于调用function的对象不同,才导致了this的指向不同。所以以前老是去记忆每种调用function的情况所对应的this,因为情况有限而且很少,所以这当然是可行的——对于聪明人来说。那么首先我们需要明确的一个事情是:function也是对象。
同时我们还需要明确的一个事情是:function执行时是在某个特定的上下文中执行的。比如你要console.log(a),没有a就无法支持函数的执行,所以某种意义上讲,a就是上下文的一部分。函数执行时它也需要一些额外的信息来支撑它的运行。
既然function是对象的话,就会有方法。而function中最核心的方法是call方法,这也是理解this最关键的方法。