JavaScript中用new操作符创建对象的时候具体发生了啥过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中用new操作符创建对象的时候具体发生了啥过程相关的知识,希望对你有一定的参考价值。

var p=new main();这是实例化一个对象;
var main=function();这是创建一个对象;
记住实例化执行顺序一定要在创建的对象后面;
因为new的时候,首先会查询是否存在这个对象;
var main=function(a,b)
this.a=a;
this.b=b;
this.ale();

main.prototype=
ale:function()
alert(this.a,this.b)


var a=1;
var b='main'
var p =new main (a,b);
当你new这个传参对象的时候首先查询是否有这个对象,然后开始查询有没有声明参数变量即a,b;然后将初始化整个对象,即执行一次mian对象。
参考技术A new对象发生了事情:
创建空对象
把this指向空对象
赋值
方法中的this指代 new 出来的对象。

当我我们用new操作符创建对象的时候,都发生了些什么?

//下面这段代码是javascript设计模式与开发实践上的一段代码

function Person( name ){
            this.name = name;
        };
        Person.prototype.getName = function(){
            return this.name;
        };
        var objectFactory = function(){
            var obj = new Object(), // 从 Object.prototype 上克隆一个空的对象
            Constructor = [].shift.call( arguments ); // 取得外部传入的构造器,此例是 Person
            obj.__proto__  = Constructor.prototype;    //手动将该对象指向正确的位置

            var ret = Constructor.apply(obj,arguments)// 借用外部传入的构造器给 obj 设置属性    

            return typeof ret === ‘object‘?ret:obj;//确保构造器总是返回一个对象
        }

        var b = new Person(‘sven‘);//使用了new构造器创建出来的对象

        var a = objectFactory( Person, ‘sven‘ );
        // console.info(b.name)
        console.log( a.name ); // 输出:sven
        console.log( a.getName() ); // 输出:sven
        console.log( Object.getPrototypeOf( a ) === Person.prototype ); // 输出:true

以上是关于JavaScript中用new操作符创建对象的时候具体发生了啥过程的主要内容,如果未能解决你的问题,请参考以下文章

javascript中new是啥意思

JS中用new创建对象与不用new创建对象区别:

java中用new运算符新申请建立一个对象的时候返回值是啥?

JavaScript实现new操作符

JavaScript实现new操作符

一切都是对象