1. 程式人生 > 其它 >JavaScript深入之new的模擬實現

JavaScript深入之new的模擬實現

廢話不多說,直接上程式碼:

function objectFactory() {

    var obj = new Object(),

    Constructor = [].shift.call(arguments);

    obj.__proto__ = Constructor.prototype;

    var ret = Constructor.apply(obj, arguments);

    return typeof ret === 'object' ? ret : obj;

};

測試一下:

unction Person(name,age){
            this.name = name
            this.age = age
        }
        Person.prototype.drink = 'cool'
        
        function factory(){
            var obj = new Object()
            Constructor = [].shift.call(arguments)
            obj.__proto__ = Constructor.prototype
            var ret = Constructor.apply(obj,arguments)
            return typeof ret === 'object'?ret:obj
        }
        var person = factory(Person,'xiaohong',43)
        console.log(person.name)
        console.log(person.age)

結果:

作者:熊貓吃西瓜 出處:https://www.cnblogs.com/XF-eng 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連線,否則保留追究法律責任的權利。