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

来源:互联网 发布:上海期货交易软件下载 编辑:程序博客网 时间:2024/06/06 06:55

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

 

0 0
原创粉丝点击