zoukankan      html  css  js  c++  java
  • js的new操作符做了哪些事情

    new操作符新建了一个空对象,这个对象原型指向构造函数的prototype,执行构造函数后返回这个对象

    1、创建一个空的对象
    2、链接到原型
    3、绑定this指向,执行构造函数
    4、确保返回的是对象 
     
     
    new过程一共有四个步骤: 
    题目解析
    先看代码
    • var Func=function(){
    •  
      };
    •  
      var func=new Func ();

    new共经过了4个阶段

    1、创建一个空对象

    var obj = new Object();

    2、设置原型链(当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象)

    obj.__proto__= Func.prototype;

    3、让Func中的this指向obj,并执行Func的函数体。(创建新的对象之后,将构造函数的作用域赋给新对象(因此this就指向了这个新对象))

    var result =Func.call(obj);

    4、判断Func的返回值类型:

      如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象

    if (typeof(result) == "object"){
      func=result;
    }
    else{
        func=obj;;
    }

     默认情况下函数返回值为undefined,即没有显示定义返回值的话,但构造函数例外,new构造函数在没有return的情况下默认返回新创建的对象。

    但是,在有显示返回值的情况下,如果返回值为基本数据类型{string,number,null,undefined,Boolean},返回值仍然是新创建的对象

    只有在显示返回一个非基本数据类型时,函数的返回值才为指定对象。在这种情况下,this所引用的值就会被丢弃了

    参考:https://blog.csdn.net/lxcao/article/details/52792466

  • 相关阅读:
    Remove Element
    wso2esb安装及helloworld
    动态布局中RadioGroup的RadioButton有时候不相互排斥的原因
    有关机房收费系统学生下机的思考
    ITOO之底层关系
    POJ 3252 Round Numbers(数位dp&记忆化搜索)
    怎样将「插件化」接入到项目之中?
    授人玫瑰 手留余香 --纪念python3.2.3官方文档翻译结束
    poj 2965 The Pilots Brothers' refrigerator
    怎样使用本文档
  • 原文地址:https://www.cnblogs.com/psxiao/p/11545217.html
Copyright © 2011-2022 走看看