JavaScript中的call方法和apply方法使用对比_基础知识
分类:pc28.am

方法定义call方法: 语法:call([JavaScript中的call方法和apply方法使用对比_基础知识_脚本之家。thisObj[,arg1[, arg2[, [,.argN]]]]]卡塔尔定义:调用二个指标的三个方法,以另三个对象替换当前指标。 表明: call 方法能够用来顶替另一个对象调用一个主意。call 方法可将叁个函数的对象上下文从开端的上下文字改过变为由 thisObj 钦赐的新对象。 若无提供 thisObj 参数,那么 Global 对象被视作 thisObj。

apply方法: 语法:apply 定义:应用某一目的的二个办法,用另一个对象替换当前指标。 表明: 即使argArray 不是叁个立见成效的数组或然不是 arguments 对象,那么将促成一个TypeError。 若无提供 argArray 和 thisObj 任何多个参数,那么 Global 对象将被看作 thisObj, 况且不能够被传送任何参数。常用实例a、

function add; } function sub; } add.call; 

那一个事例中的意思便是用 add 来替换 sub,add.call ,所以运维结果为:alert; // 注意:js 中的函数其实是指标,函数名是对 Function 对象的援引。b、

function Animal(){ this.name = "Animal"; this.showName = function; } } function Cat(){ this.name = "Cat"; } var animal = new Animal(); var cat = new Cat(); //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。 //输入结果为"Cat" animal.showName.call; //animal.showName.apply; 

call 的意味是把 animal 的章程放到cat上履行,原来cat是尚未showName(卡塔尔国方法,今后是把animal 的showName(卡塔尔(قطر‎方法放到 cat上来施行,所以this.name 应该是 Catc、完成延续

function Animal{ this.name = name; this.showName = function; } } function Cat{ Animal.call; } var cat = new Cat; cat.showName(); 

Animal.call 的情致正是选拔 Animal对象代替this对象,那么 Cat中不就有Animal的全体属性和章程了吧,Cat对象就可以知道一贯调用Animal的秘技以致品质了.d、多重世袭

function Class10() { this.showSub = function; } } function Class11() { this.showAdd = function; } } function Class2() { Class10.call; Class11.call; } 

超级粗略,使用四个 call 就贯彻多种世襲了当然,js的后续还会有其余办法,比方利用原型链,那一个不归于本文的范畴,只是在那证实call 的用法。说了call ,当然还会有 apply,那五个方法多数是叁个情趣,差异在于 call 的第二个参数能够是自由等级次序,而apply的第二个参数必需是数组,也得以是arguments

JavaScript 中的call和apply方法主要用于修改函数对象的上下文,即函数中this所指向的剧情。

fun.call(obj1, arg1, arg2, ...);fun.apply;

var Obj1 = { name: 'Object1', say: function { console.log(this.name   ' says '   p1   ' '   p2); }};// logs 'Object1 says Good morning'Obj1.say;var Obj2 = { name: 'Object2'};// logs 'Object2 says Good afternoon'Obj1.say.call(Obj2, 'Good', 'afternoon');// logs 'Object2 says Good afternoon again'Obj1.say.apply(Obj2, ['Good', 'afternoon again']);

经过演示可以看见,通过寻常方法调用say的时候,方法中的this指向Obj1,而因而call和apply调用的时候,this却指向了Obj2。

通过示范能够见到,call和apply的效果是完全相符的,其调用方法的差别也只是参数列表差别罢了。

本文由pc28.am发布于pc28.am,转载请注明出处:JavaScript中的call方法和apply方法使用对比_基础知识

上一篇:js文档加载完毕有哪几种写法以及如何开发jq插件 下一篇:没有了
猜你喜欢
热门排行
精彩图文