Js中调用new方法生成对象的过程

    xiaoxiao2025-03-02  18

    var tes1=new Object();

    console.log(tes1.constructor);

    console.log(tes1.__proto__);

    result:

    Object() { [native code] }

    Object {}

    function test(){

    this.name="myName";

    }

    var tes2 = new test();

    console.log(tes2.constructor);

    console.log(tes2.__proto__);

    result:

    test(){

    this.name="myName";

    }

    Object {}

    1.当new 一个函数时,先创建一个{}对象,该对象的constructor为new 关键字后的函数,prototype为Object{}(js中Object为所有对象的父类,

    将生成对象的 prototype设为Object{}就达到了这种效果,也可显式设置prototype,)之后执行constructor的代码,若代码中的有this,那么这个this代表{},所以constructor中的this.属性|方法会在{}中生成。

    对于其它的方式生成的对象

    如:

    var tes3={};

    console.log(tes3.constructor);

    console.log(tes3.__proto__);

    result:

    Object() { [native code] }

    Object {} 我们可以发现其结果和new Object()相同可以得出,以该种方式创建的对象和之前无差别

    但当我们执行以下代码时(函数本身也是一个对象)

    console.log(test.constructor);

    console.log(test.__proto__);

    result

             Function() { [native code] }          () {}

    通过以上分析可得:在我们定义一个函数时js会生成一个{}对象,constructor为Function(){[nateiv code]},通过该方法对该函数对象进行初始化(使用本地代码)prototype为一个匿名函数(该匿名函数有指向Object的原型),使得该函数通过原型连接到Object对象上构成原型链

    HelloWorld

     

    转载请注明原文地址: https://ju.6miu.com/read-1296789.html
    最新回复(0)