javascript-创建对象的几种方法

loading 2023年03月09日 54次浏览

1. 工厂模式

直接在函数中创建一个新的obj并给它赋值,缺点在于每一次通过工厂方法去创建一个对象,这个对象的属性name和方法sayName都必须重新创建一次,浪费内存。

        function createObj(){
            let obj = new Object();
            obj.name = 'asd';
            obj.sayName = function(){
                console.log(this.name)
            }
            return obj;
        }

        let obj = createObj();

2. 构造器模式

这种方法要通过this配合new去实现类似于构造函数的作用,缺点同上。

        function Obj(){
            this.name = 'asd';
            this.sayName = function(){
                console.log(this.name)
            }
        }

        let obj = new Obj();

3. 原型模式

把属性和方法定义在原型上而不是this上,缺点在于当有引用属性时,改变一个对象的这个属性也会改变其他对象的这个属性。

        function Obj(){}
        Obj.prototype.name = 'asd';
        Obj.prototype.sayName = function(){
            console.log(this.name);
        }
        
        let obj = new Obj();

4. 构造器/原型混合模式

属性定义在this上,方法定义在原型上。

        function Obj(){
            this.name = 'asd';
            this.arr = [1,2,3];
        }
        Obj.prototype.sayName = function(){
            console.log(this.name);
        }

        let obj = new Obj();