javascript call() apply() 函数 实现继承
来源:互联网 发布:海关数据购买 天津 编辑:程序博客网 时间:2024/05/22 06:29
ECMAScript规范给所有函数都定义了Call()与apply()两个方法,call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组。
eg:A.call(B,','); 意思就是用B来调用A(',');apply类似,另外基于此可以实现基本继承,多继承等,很多js框架库使用非常频繁
例如:function add(a, b) { return a + b; }
function sub(a, b) { return a - b; }
/*apply用法
* var a1 = sub.apply(add, [4, 2]);
*var a2= add.apply(sub, [4, 2]);
*/
var a1 = sub.call(add, 4, 2);
var a2= add.call(sub, 4, 2);
输出:a1=2 a2=6
感觉还是有意未尽,更有意思的还在下面
js总是认为他是万能的,既然高级语言会继承,我js也不能示弱:JS模仿继承
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); // a输出的是456
这里就是把啊f1的方法拿给f2来使用,f2便可以使用f1中所有的方法,这不正是高级语言中继承的概念喽。当然根据综上可扩展出多继承,使用多个call便可以实现多继承
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哈哈~
- javascript call() apply() 函数 实现继承
- JavaScript原型、函数伪装(apply,call)、继承
- 【javascript】call或apply实现继承(多继承)
- JavaScript使用Call和Apply方法实现继承
- JavaScript之call() 、apply() 函数
- JavaScript中apply() call() 函数
- Javascript继承机制(call、apply、prototype)
- Javascript继承机制(call、apply、prototype)
- Javascript中的apply和call继承
- Javascript中的apply和call继承
- 函数非继承方法:apply()和call()
- javascript 的 apply实现继承
- 深入JavaScript(apply和call函数)
- 关于javascript的apply和call函数
- javascript 函数的方法call()和apply()
- 关于javascript的apply和call函数
- 关于javascript的apply和call函数
- javascript函数调用,call和apply
- 入门正则
- mysql 笔记 查询时分秒做条件
- 玩转Visual Studio-高效管理代码
- 【首届大数据社区研讨会】听技术大咖如何解读大数据
- android地址
- javascript call() apply() 函数 实现继承
- js 中的数字(带有两位小数的浮点数)计算
- Apache HAWQ 基于 YARN 的弹性资源管理 [作者:金毅]
- hdu 5534 Partial Tree(完全背包)
- Collection 接口 源代码
- RGB与YUV转换
- ubuntu 修改默认 shell
- Chart控件X轴显示不全的解决方法
- JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)