zoukankan      html  css  js  c++  java
  • 使用new时,会发生什么?

    使用new来调用函数,或者说发生构造函数调用时,会自动执行下面的操作:

    1. 创建(或说构造)一个全新的对象。
    2. 这个新对象会被执行[[prototype]]连接。
    3. 这个新对象会绑定到函数调用的this。
    4. 如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象。

    当this碰到return时

    如下代码:

    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 1;
    }
    var a = new fn;  
    console.log(a.user); //追梦子
    function fn()  
    {  
        this.user = '追梦子';  
        return undefined;
    }
    var a = new fn;  
    console.log(a.user); //追梦子

    总结:

    • 如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。
    • 还有一点就是虽然null也是对象,但是在这里this还是指向那个函数的实例,因为null比较特殊。
      function fn()  
      {  
          this.user = '追梦子';  
          return null;
      }
      var a = new fn;  
      console.log(a.user); //追梦子
  • 相关阅读:
    Core Data
    scrollViews
    网络通信
    UIView
    textView取消键盘
    AFNetworking转载
    多线程
    css3[转载][菜单导航] 带有记忆功能的多页面跳转导航菜单
    jQuery翻牌或百叶窗效果
    jQuery联动日历(三)完成
  • 原文地址:https://www.cnblogs.com/lmjZone/p/9408291.html
Copyright © 2011-2022 走看看