标签:WAD obj 不同 class show his 一个 区别 log
Function.apply(obj, args)接收两个参数:
obj: 改变Function的this指向,使其指向obj;
args: 传入给函数的数组参数;
Function.call(obj, param1, param2, param3...)
obj: 改变Function的this指向,使其指向obj;
args: 传入给函数的数组参数;
实例:
function add(c, d) { return this.a + this.b + c + d; } var strObj = { a: ‘今天‘, b: ‘天气‘}; console.log(add.apply(strObj, [‘真‘, ‘好‘])); // 今天天气真好 console.log(add.call(strObj, ‘真‘, ‘好‘)); // 今天天气真好
apply的只有两个参数,第一个参数是this指向的对象,第二个参数是传入Funtion的参数组成的数组;
call有一个及以上的参数, 第一个参数是this指向的对象,后面的参数均是传入Function的参数,有两个就是传给Function两个参数,有三个就是传了三个,有几个传几个;
若参数的形式是数组类型,且在调用时,参数的顺序一致(不出现乱换参数位置的情况),比如:父函数是Person(name, age) 子函数Student(name, age, grade),就可以使用apply;
若参数顺序不一致,比如:父函数 Person(name, age)子函数 Student(age, name, grade),就可以使用call,指定参数对应值的位置(Student.call(this, name, age, grade));
function Class10(){ this.showSub = function(a,b){ alert(a - b); } } function Class11(){ this.showAdd = function(a,b){ alert(a + b); } } function Class12(){ Class10.apply(this); Class11.apply(this); // Class10.call(this); //Class11.call(this); } var c2 = new Class12(); c2.showSub(3,1); //2 c2.showAdd(3,1); //4
标签:WAD obj 不同 class show his 一个 区别 log
原文地址:https://www.cnblogs.com/zhizhi0810/p/11921408.html