关于call ,this,继承,记录一点自己的初步理解
来源:互联网 发布:电脑视频监控软件 编辑:程序博客网 时间:2024/05/20 23:33
这几天在看廖雪峰老师的js教程,在提到this的指向问题时,讲到了apply改变this指向的作用。
getAge.apply(xiaoming, []); // 25, getAge()里的this指向xiaoming, 参数为空
(以上摘自廖雪峰老师js教程-函数-方法篇)
后来又看了继承相关的内容,用到了call和apply,这两个函数只有一点不同,前者按顺序传递参数,后者参数必须为数组。
但当时没有完全理解,感觉像是call和apply的新用法?以getAge为例,为什么说xiaoming继承了getAge方法?
网上看了一些举例,这个感觉很不错:
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
这里可以发现,f2这个对象使用了f1的add方法,从而return了f2里的a值,可以理解为,f2继承了f1的add方法。用改变this指向的概念,则解释为:f1.add()里的this指向了f2,所以a值成为了456(如果没有改变this的指向,直接调用f1.add()会报错)
总之,本质是改变this的指向,在表面上我们称之继承,只是为了配合众多面向对象语言里的继承概念(所谓js不可出大流,不然没人愿意用啊)
但我还是想说,这tm对于初学者真够绕的,mmp!
参考资料:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345005399057070809cfaa347dfb7207900cfd116fb000
http://www.cnblogs.com/itstone/archive/2012/07/23/call.html
如侵删
- 关于call ,this,继承,记录一点自己的初步理解
- 关于apply和call的一点记录
- 关于volley的一点自己的理解
- 关于委托自己的一点理解
- 关于js函数中this的一点理解
- 关于call的继承问题
- 关于spring mvc的一点自己的理解
- 自己关于Intent的一点大致的理解
- C++继承的一点理解
- 关于spring切面的一点理解,记录一下
- 关于this的一点误解
- CountDownLatch 自己的一点理解
- this call() apply()理解
- 关于继承的一点思考
- 关于继承的一点小东西
- 写一点opengl的初步入门理解
- javascript关于this,call,apply的小结
- callee,caller,call()以及apply()的用法理解以及从中引申出的关于作用域跟this的理解
- 最高位数字
- 280. Wiggle Sort
- 65-进程组(实验一)
- Android 6.0运行时权限 baseactivity简单封装
- 阿里面试回来,想和Java程序员谈一谈
- 关于call ,this,继承,记录一点自己的初步理解
- 信号的稀疏表示
- Vmware虚拟机安装win7系统教程
- [LeetCode]400. Nth Digit
- UNIX系统 文件操作接口
- leetcode 53. Maximum Subarray
- iTween使用问题
- 数据结构03栈和队列
- CDN是什么?使用CDN有什么优势?