一、this

this的指向大致可以分为以下几种:

  • 作为对象的方法调用
  • 作为普通函数调用
  • 构造器调用
  • Function.prototype.call或Function.prototype.apply

1.作为对象调用

当函数作为对象的方法被调用,this指向该对象:

var obj = {
a:1,
getA:function(){
alert(this === obj); //输出true
alert(this.a); //输出1
}
}; obj.getA();

当函数作为普通函数被调用,this指向全局对象(浏览器中指window对象)

window.name = 'globalName';

var getName = function(){
return this.name;
} console.log(getName()); //输出:globalName 或者 window.name = 'globalName'; var muObject = {
name: 'sven',
getName: function(){
return this.name;
}
}; var getName = myObject.getName;
console.log(getName()); //输出: globalName

构造器里的this指向返回的对象

var MyClass = function(){
this.name = 'sven';
}; var obj = new MyClass();
alert(obj.name); //输出:sven

call和apply动态的改变传入函数的this

var obj1 = {
name: 'sven',
getName:function(){
return this.name;
}
}; var obj2 = {
name:'anne'
}; console.log(obj1.getName.call(obj2)); //输出: ‘anne’

最新文章

  1. 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
  2. 解决cefsharp在winform中不显示tooltipText问题(网页元素的title提示)
  3. 浅谈float浮动
  4. GIT之旅【第一篇】
  5. Backbone事件模块源码分析
  6. Android客户端性能测试(一):使用APT测试Android应用性能
  7. Java中比较不同的MD5计算方式
  8. ERWin & ERStudio图里的实线和虚线的含义[转]
  9. DownloadManager 下载管理类
  10. 多路复用I/O poll()
  11. C#中foreach语句的迭代器实现机制
  12. linux视频学习4(crontab和进程)
  13. SELECT中的多表连接
  14. EasyUI扩展验证
  15. VK-Cup 2017 qualification 1
  16. POI中excle样式怎么写
  17. fabric.js PatternBrush
  18. UML和模式应用4:初始阶段(5)--用例编写的准则
  19. Java基础语法<八> 继承 多态 抽象 反射
  20. java自定义事件机制分析

热门文章

  1. 分类并查集[noi2001 食物链]
  2. 【Matlab开发】MATLAB编译C/C++代码
  3. Hbase概述
  4. springboot获取项目的绝对路径和根目录
  5. [转帖]关于Java中SQL语句的拼接规则
  6. GridControl gridView显示筛选行,设置条件为包含
  7. Oracle——学习之路(视图——虚拟表)
  8. 【LOJ】#3093. 「BJOI2019」光线
  9. git安装配置相关
  10. 二项式反演/minmax容斥初探