这篇文章给大家介绍叫()与()在JavaScript中应用的功能是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强> 1.调用()和()的应用作用强>
首先引出问题:用电话()和()应用的目的是什么?
来看个例子,在JavaScript OOP中,我们经常会这样定义:
function 猫(){ } cat.prototype={ 食物:“fish"才能, ,,说:函数(){ ,,,警报(“小姐:love “+ this.food); ,,} } var blackCat =, new 猫; blackCat.say ();
但是如果我们有一个对象<代码> whiteDog={食物:“bone"}> 代码,我们不想对它重新定义说方法,那么我们可以通过电话或应用用blackCat说的方法:<代码> blackCat.say.call (whiteDog); 代码>
所以,可以看出调用和应用是为了动态改变这而出现的,当一个对象没有某个方法,但是其他的有,我们可以借助电话或应用用其它对象的方法来操作。
在实际中用的比较多的是,通过<代码>文档。getElementsByTagName 代码>选择的dom节点是一种类似数组的对象。它不能应用数组下的推动,流行等方法。我们可以通过:
var domNodes =, Array.prototype.slice.call (document.getElementsByTagName (“*”)),
这样domnode就可以应用数组下的所有方法了。
<强> 2.调用()和()应用的区别强>
首先申请的定义如下:
- <李>
应用方法能劫持另外一个对象的方法,继承另外一个对象的属性
李> <李>这个类(obj, args)方法能接收两个参数,第一个参数是在其中运行函数的作用域,另一个是参数数组,其中,第二个参数可以是数组,也可以是参数对象
李>- <李>
obj:这个对象将代替函数类里这对象
李> <李>参数:这个是数组,它将作为参数传给函数(参数→参数)
李><代码> apply() 代码>的用法
//定义一个人类 function 人(姓名、年龄){ this.name 才能=,名称; 时间=this.age 才能;年龄; }//定义一个学生类 function 学生(姓名、年龄、年级){ Person.apply才能(这个论点);//传入参数对象//Person.apply才能(这一点,[num1, num2]);//传入数组 时间=this.grade 才能;等级; }//创建一个学生类 var student =, new 学生(& # 39;一个# 39;& # 39;10 & # 39;,& # 39;一年级& # 39;);//测试 console.log(& # 39;名称:& # 39;+ student.name + & # 39;年龄:& # 39;+ student.age + & # 39;评级:& # 39;+ student.grade);
学生类里没有给姓名和年龄属性赋值啊,为什么又存在这两个属性的值呢,这个就是应用的神奇之处。
分析:<代码> Person.apply(这个论点);代码>
- <李>
:代表的是学生,表示将人中这个指的向学生。
李> <李>参数:是一个数组,在例子中表示['一个# 39;& # 39;10 & # 39;,& # 39;一年级& # 39;];
李>通俗一点讲就是:用学生去执行人这个类里面的内容,在人这个类里面存在<代码> this.name> 代码等之类的语句,这样就讲属性创建到了学生对象里面。
<代码> apply() 代码>和<代码>调用()代码>的作用是一样的,他们的区别仅在于接收参数的方式不同,<代码>调用()代码>需要把参数一个个列出来。
<强>调用()的用法强>
在学生函数里面可以将应用中修改成如下:
Person.call(姓名,年龄);
<强> 3。什么情况下用申请(),什么情况下用电话()强>
至于是使用<代码> apply() 代码>还是<代码>调用()代码>,取决于采取那种给函数传递参数的方式最方便。
如果打算直接传入参数对象,或者是数组,并且参数列表相同则使用<代码> apply()> 代码;否,则选择<代码>调用()代码>可能更合适。
例:应用示例里面传递了参数参数,并且在调用个人的时候参数的列表是对应一致的,也就是人和学生的参数列表前两位是一致的,就可以采用适用。
如果我的人的参数列表是这样的(年龄、名称)而学生的参数列表是(姓名、年龄、品位),这样的就可以用电话来实现了<代码> Person.call(年龄,这名字,等级);代码>
关于调用()与()在JavaScript中应用的功能是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。