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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我我们用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

以上是关于当我我们用new操作符创建对象的时候,都发生了些什么?的主要内容,如果未能解决你的问题,请参考以下文章

js new的时候干了些啥?

js new的时候干了些啥?

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

new做了些什么?

java new一个对象的过程中发生了什么

new一个对象的过程中发生了什么?