JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: this/self 总是返回一个对象.

至于返回的这个对象到底是什么, 其实就是我们需要去发掘的.

1. this的指向是动态的, 下面在test()中返回的this.name, 这里的this指代的是具体的环境, 如果在obj1里面则返回"李雷", 如果在obj2里面则返回"韩梅梅", 如果在全局作用域内, 那就会在全局作用域下去找name这个属性, 因此返回"李强".

function test(){
return this.name;
}; var obj1 = {
name: "李雷",
getName: test
}; var obj2 = {
name: "韩梅梅",
getName: test
}; var name = "李强"; obj1.getName(); // "李雷"
obj2.getName(); // "韩梅梅"
test(); // "李强"

2. 构造函数中的this会在new时将待实例的空对象赋值给this, 这个操作实际上是将this指向了一个空对象, 用于从构造函数中拷贝属性和方法

function Person(name){
this.name = name;
} var lilei = new Person("李雷");
lilei.name; // "李雷"

3. 在网络编程中, this指代的是所在的元素节点, 比如下面例子中的this就是指代的input这个元素节点. 注意这个DOM节点也是一个对象, this指代了他自身

<body>
<input type="text" id="inputNumber" onblur="test(this, 10)">
<script>
function test(el, num){
if (el.value>num) alert("大了");
if (el.value<num) alert("小了");
if (el.value==num) alert("正确!");
}
</script>
</body>

理解this其实只需要理解一句话就好: this指代的是当前属性或方法所在的对象, 它是动态的.

最新文章

  1. useful commands for Kubernetes beginners
  2. css中单位px、pt、em和rem的区别
  3. unity3D-iOS工程整合爬过的坑~
  4. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
  5. 《从零开始做一个MEAN全栈项目》(3)
  6. 数据持久化之NSKeyedArchiver
  7. 素数筛 uva 543
  8. 在Discuz中增加创始人
  9. java中使用session的一些细节
  10. 用JS查看修改CSS样式(cssText,attribute(&#39;style&#39;),currentStyle,getComputedStyle)
  11. cocos2dx 的Hello world的简单分析
  12. Hibernate对象的状态和映射
  13. iframe与frameset有什么区别
  14. HDU1379:DNA Sorting
  15. dev repositoryItem 手工定义
  16. C#写入文件的几种方式
  17. JavaScript学习笔记(十五)——对象之Date,RegExp
  18. java中的线程问题(一)什么是线程。
  19. 第二次作业 --- 我对QQ的评测
  20. facebook api之Access Tokens之Business Manager System User

热门文章

  1. [Linux] 创建、删除用户
  2. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
  3. PhpStorm 增加Swoole智能提示
  4. OpenJudge计算概论-成绩判断
  5. gis空间分析案例_7参数单坐标转换
  6. 如何git revert merge commit?
  7. angular 中如何绑定属性
  8. ubuntu 12.04 nfs-server/client安装配置
  9. java生成二维码打印到浏览器
  10. Apache2.4的三种模式