标签:style blog http color io os 使用 ar sp
function add(a,b){
console.log(a+b);
}
function sub(a,b){
console.log(a-b);
}
add.call(sub,3,2); //5
总结:以上代码 定义两个方法,而最后一句话,不妨理解为 sub对象 调用了 add对象 的方法,并把参数也带入方法里。
call 和 apply的定义说明:call和apply 是函数的非继承方法,在某个特定作用范围内调用某个函数,设置函数体内this对象的值,
function NJie(){
this.name = "Njie",
this.sayName = function(){
console.log(this.name);
}
}
function KK(){
this.name ="KK";
}
var n = new NJie();
var k = new KK();
n.sayName(); //NJie
n.sayName.call(k); //KK
总结:比如说:k 对象没有 sayName 的函数,而 n 有这个函数,那 k 就通过call 来借 n的 sayName使用,当然也要把在 k 中的值带入到方法里。
说明:call 和 apply 的区别,在于两个传入的参数的方式不一样
// 父类
function Person(name,age){
this.name = name;
this.age = age;
}
//子类 学生
function Student(name,age,grade){
Person.apply(this,arguments); //子类继承了父类
// Person.call(this,name,age); //当然,也可以使用 call的方法
this.grade = grade;
}
//创建一个学生的实例
var s1 = new Student("倪杰","23","北京大学成人班,一年级");
console.log("您好,",s1.name,"您今年",s1.age,"岁,就读于",s1.grade,",实在太棒了");
总结:
以上的例子有两个要点:
1,是可以使用 call的方法来做 js 的继承处理;
2,call 和 apply 的区别主要是在于后面的传入参数方式不同,call传参数要把参数一一列出来,而apply则可以使用 arguments 这个属性直接带过去.
标签:style blog http color io os 使用 ar sp
原文地址:http://www.cnblogs.com/zynbg/p/4017214.html