最近看了很多人的微博,主要是“追梦子”的微博,总结了一下。希望大家多多指点。

1. 没有new this的指向问题

 
this的指向在函数创建的时候是决定不了的,在调用的时候才能决定,谁调用的就指向谁
因为this只会指向它的上一级对象
例一:
function a(){
var user = "追梦子";
console.log(this.user); //undefined
console.log(this); //Window
}
a(); // === window.a()
   var o = {
     user:"追梦子",
      fn:function(){
          console.log(this.user);  //追梦子
     console.log(this);  // Object{...}
      }
  }
  o.fn(); // ===window.o.fn()
 

特殊情况:

var o = {
a:10,
b:{
a:12,
fn:function(){
console.log(this.a); //undefined
console.log(this); //window
}
}
}
var j = o.b.fn; //j并没有被调用
j(); // === window.j()
2. new 构造方法

function Fn(){
this.user = "追梦子";
}
var a = new Fn();
console.log(a.user); //追梦子

用了new关键字就是创建一个对象实例,我们这里用变量a创建了一个Fn的实例(相当于复制了一份Fn到对象a里面),

此时仅仅只是创建,并没有执行,而调用这个函数Fn的是对象a,那么this指向的自然是对象a
 

this 与return     如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例

function fn()
{
this.user = '追梦子';
return {};
}
var a = new fn;
console.log(a.user); //undefined
function fn()
{
this.user = '追梦子';
return function(){};
}
var a = new fn;
console.log(a.user); //undefined
function fn()
{
this.user = '追梦子';
return ;
}
var a = new fn;
console.log(a.user); //追梦子
function fn()
{
this.user = '追梦子';
return undefined;//return null
}
var a = new fn;
console.log(a); //fn {user: "追梦子"}
在浏览器中setTimeout、setInterval和匿名函数执行时的当前对象是全局对象window
 
apply用于改变函数执行时的当前对象,当无参数时,当前对象为window,有参数时当前对象为该参数
var name = "window";

var someone = {
name: "Bob",
showName: function(){
alert(this.name);
}
}; var other = {
name: "Tom"
}; someone.showName.apply(); //window
someone.showName.apply(other); //Tom

最新文章

  1. html5 video
  2. [转]jQuery: how to get which button was clicked upon form submission?
  3. JVM内存分析工具MAT使用
  4. DELETE与TRUNCATE的区别
  5. 20145225《Java程序设计》 第8周学习总结
  6. Lighttpd
  7. Linux runlevel 运行级别
  8. Linux系统各发行版镜像下载
  9. 无线WEP入侵注意事项
  10. POJ 2531 Network Saboteur
  11. QTP10破解
  12. openStack 云平台管理节点管理网口流量非常大 出现丢包严重 终端总是时常中断问题调试及当前测试较有效方案
  13. InjectAPC全部项目(Win32和Win64位)
  14. phpcms v9文章页调用点击量方法
  15. 利用VNC远程登录Linux服务器简易版
  16. jQuery之jquery.lazyload.js插件用法
  17. EBS 外部信用风险检查
  18. 单链表反转(Singly Linked Lists in Java)
  19. [Reinforcement Learning] 动态规划(Planning)
  20. centos 7 上zabbix 3.0 服务端安装

热门文章

  1. nodejs项目在webstorm里进行debug的设定
  2. Java的委托
  3. 关于MySql的DBHelper类以及数据分页
  4. SilverlightOA源代码(可用于企业级Silverlight项目的二次开发,长年有效)
  5. Intellij Idea系列之Tomcat环境的搭建(三)
  6. jquery 文本域光标操作(选、添、删、取)
  7. No.1__C#
  8. JAVA设计模式之不变模式
  9. CSS子元素居中(父元素宽高已知,子元素未知)
  10. 百度Ueditor