JS call & apply 应用

来源:互联网 发布:快速备案淘宝网 编辑:程序博客网 时间:2024/05/20 20:05

apply和call的定义:这两个方法都能劫持另外一个对象的方法,继承另外一个对象的属性/方法.

xxxFunction.apply(obj,args) 方法接收两个参数
obj
:这个对象将代替xxxFunction类里this对象,也即xxxFunction类(函数)里的this不在是指 xxxFunction 本身,而是obj;
args:这个是数组类型的参数,它将作为参数传给Function(args --> arguments)


call:和apply类似的,只不过是参数列表不一样.

xxxFunction.call(obj,[param1[,param2[,...[,paramN]]]])
obj
:这个对象将代替xxxFunction类里this对象,(跟apply中的obj一样);
params:这个是一个参数列表(即逗号隔开的零个或多个参数),不是数组;


function test1(){

console.log(this.name);

console.log(this.age);

}

var Persona = function(name,age)

{

this.name = name;

this.age = age;

this.pr = function(){

console(this.name + this.age);

}

}

var Personb = function(name,age)

{

this.name = name;

this.age = age;


}


var ap = new Persona("aaa",333);

var bp = new Personb('bob',4444);


test1.apply(ap,'"");//输出 "aaa",333

test1.call(bp,[]);//输出 'bob',4444


ap.pr.call(bp,"");//输出 'bob' 4444   等于是 bp 可以调用 ap 的方法/属性 或是 继承了ap

ap.pr.apply(bp,"");//输出 'bob' 4444




0 0
原创粉丝点击