这篇文章主要介绍了 javascript 实现方法调用与方法触发小结的相关资料, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
在 js 中,this 关键字是一个比较让人有意思的东西,但是它的指向经常让初学者摸不着头脑。
其实要理解这个关键字,需要理清两个问题——"方法的调用和方法的触发"
下面先看一段代码
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>
- function
- </title>
- <script>
- function showThis() {
- console.info(this);
- }
- function Test1() {
- this.f = showThis;
- }
- function Test2() {
- this.f = function() {
- showThis();
- }
- }
- showThis(); //window
- new Test1().f(); //Test1
- new Test2().f(); //window
- </script>
- </head>
- <body>
- </body>
- </html>
20 行打印出 window 对象,这个很容易理解,但是 21 行打印出 Test1 的实例对象,而 22 行却打印出 window 对象。查看 Test1 和 Test2 的构造,发现方法 f 最终都执行了 showThis 方法。但是 showThis 中的 this 指向却不同。这是因为 Test1 中的 f 方法直接指向 showThis,new Test1().f() 是以 Test1 的实例直接调用 showThis 方法,调用者是 Test1 的实例。而 new Test2().f() 是在 Test2 的实例方法 f 中触发 window 对象的 showThis 方法,其中的 this 就是指向其调用者 window 而不是触发者 Test2 的实例。
至此可以发现。this 指向的是调用者,而触发者只是推进调用者执行指定方法而已。
来源: http://www.phperz.com/article/17/0222/266554.html