Объединить свойства объекта без оператора Spread в классе - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь реализовать шаблон Prototype в классе es6 без оператора Spread без успеха.

я хочу создать10000000 звезд на холсте, поэтому я подумал, что этот шаблон будет идеальным, поскольку по определению

Шаблон-прототип - это шаблон творческого проектирования в разработке программного обеспечения.Он используется, когда тип создаваемых объектов определяется прототипным экземпляром, который клонируется для создания новых объектов.

Пока это мой рабочий код с оператором распространения:

    class Prototype {// Class
            constructor(options) {// constructor 
                this.options = options;//properties
                this.context = undefined;
            }        
            //Methods 
            clone (features){ 

                let clone = new Prototype(this.options); 

                clone.options = {...clone.options, ...features};
                //Object.assign(clone.options, features);

                return clone;
            }
        } 

        //object literal    
        var options ={
            width : 200,
            height: 100
        }    
        let prototype = new Prototype(options);  

        let clone = prototype.clone({ 
            height: 800,
            color: "red"
        } ); 
        console.log("prototype:::",prototype,"clone:::",clone); 

Но используя Object.assign , я получаю это, что совсем не правильно

    class Prototype {// Class
            constructor(options) {// constructor 
                this.options = options;//properties
                this.context = undefined;
            }        
            //Methods 
            clone (features){ 

                let clone = new Prototype(this.options); 

                //clone.options = {...clone.options, ...features};
                Object.assign(clone.options, features);

                return clone;
            }
        } 

        //object literal    
        var options ={
            width : 200,
            height: 100
        }    
        let prototype = new Prototype(options);  

        let clone = prototype.clone({ 
            height: 800,
            color: "red"
        } ); 
        console.log("prototype:::",prototype,"clone:::",clone); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...