js中call和apply
ECMAScript规范给所有函数都定义了Call()与apply()两个方法,call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组。
a.call(b); //刚一看还以为是a要调用b,其实是a应用于b下
function fun1() { this.a = 123; this.add = function () { return this.a } } function fun2() { this.a = 456; } var f1=new fun1() var f2=new fun2() var a = f1.add.call(f2); // 将f1中的add放到f2中执行了,而f2中的a=456,所以a输出的是456
看到没,将一个东西放到一个东西内,是不是想到了一个东西,java中的继承。。。没错call和apply就是来实现js的继承的
可以用来实现多继承
function fun1() { this.add = function () { return this.a } } function fun2() { this.sub = function () { return this.a-this.b } } function fun3() { this.a = 10; this.b = 2; fun1.call(this); fun2.call(this); } var f3 = new fun3() alert(f3.add()); alert(f3.sub());如此,想要继承谁就可以继承谁,我js天下无敌 O(∩_∩)O哈哈~
没错,你确实很流弊,你天下无敌

浙公网安备 33010602011771号