javascript中this对象的指向问题
来源:互联网 发布:java string split 点 编辑:程序博客网 时间:2024/05/21 04:40
1. 不像C#,this一定是指向当前对象。
js的this指向是不确定的,也就是说是可以动态改变的。call/apply 就是用于改变this指向的函数,这样设计可以让代码更加灵活,复用性更高。
2. this 一般情况下,都是指向函数的拥有者。
这一点很重要!这一点很重要!这一点很重要!
这也是一道常见的面试题,如下代码:
var myObject = { foo: "bar", func: function() { var self = this; console.log(this.foo); console.log(self.foo); (function() { console.log(this.foo); console.log(self.foo); }()); }};myObject.func();//1.第一个this.foo输出bar,因为当前this指向对象myObject。//2.第二个self.foo输出bar,因为self是this的副本,同指向myObject对象。//3.第三个this.foo输出undefined,因为这个IIFE(立即执行函数表达式)中的this指向window。//4.第四个self.foo输出bar,因为这个匿名函数所处的上下文中没有self,所以通过作用域链向上查找,从包含它的父函数中找到了指向myObject对象的self。
为什么第二点说一般情况下this都是指向函数的拥有者,因为有特殊情况。函数自执行就是特殊情况,在函数自执行里,this 指向的是:window。所以第一个 console.log 打印的是 window 的属性 number。
所以要加一点:
3. 在函数自执行里,this 指向的是 window 对象。
理解关键:方法/函数是由谁(对象) 调用 的,方法/函数内部的 this 就指向谁(该对象);
注意:被谁调用,不是处于谁的作用域,即使在作用域
0 0
- javascript中this对象的指向问题
- javascript中this的指向问题
- javascript中this指向问题的综合
- JavaScript中this的指向问题
- JavaScript中this的指向问题
- JavaScript中this的指向问题
- javascript中this指向问题
- javascript 的 this 指向问题
- javascript 中 this 的指向
- JavaScript中 this 的指向
- JavaScript中this的指向
- javascript中this的指向
- javaScript中this的指向
- Javascript中this的指向
- JavaScript中setTimeout的作用域以及this指向问题
- javascript中this的指向问题(一)
- javascript中this 的指向问题(二)
- 细说JavaScript中this指向问题
- 各种距离
- hadoop1.2.1伪集群搭建
- 布局
- Linux上的GetTickCount函数
- <%@ include file="URL" %>
- javascript中this对象的指向问题
- http协议基础知识总结
- texmacs 源码安装
- 【模拟】洛谷 P1003 铺地毯
- 解决Eclipse SVN文件冲突详解
- 对象或库文件“XXX.lib”是使用比创建其他对象所用编译器旧的编译器创建的;请重新生成旧的对象和库
- linux下lz4解压缩的安装包
- gbk to utf-8以及java默认编码之间的转化
- 元素设为inline-block元素里有内容与无内容导致的错位问题