Добавление Javascript в различные сценарии - PullRequest
0 голосов
/ 22 ноября 2018

Я изучаю javascript (из php) и вижу, что существует множество способов создания классов.Также узнал о магических методах, таких как get и set, и мне интересно, как они могут быть созданы в различных сценариях (помимо того, что делать это при создании класса с ключевым словом class).Также я опубликовал способ получения и установки get в объектном литерале, и мне было интересно, есть ли более простой способ.Вот код

//-------------------------------------------------------------------
    //class
    class create{
        constructor(param1,param2){
            this.name = param1;
            this.name2 = param2;
        }

        fullname(){
            console.log('...');
        }

        set name3(enteredValue){
            this._name3 = enteredValue;
        }
        get name3(){
            return this._name3;
        }//This is how  it is done in class
    }
    var obj2 = new create('test','test');

//-------------------------------------------------------------------
    //object literal
    var objLit = {
        name: 'asas',
        name2: 'assad'
    }
    Object.defineProperty(objLit, 'name3', { 
        get : function(){
            return this._name3;
        },
        set : function(value){
            this._name3 = value;
        }
    }); //This is how it is done in obj literal / Is there other way to do it in object?
//-------------------------------------------------------------------

    //Factory Function
    function createObj(param1, param2){
        return{
            name1: param1,
            name2: param2,
            fullName: function(){
                console.log(this.name1+' '+this.name2);
            }
        }
    }
    var obj3 = createObj('Vukasin','Miljan');
    //How to add setter in this scenario?


//-------------------------------------------------------------------

    //Constructor function

    function createObj2(param1,param2){
        this.name1 = param1;
        this.name2 = param2;
    }
    var obj4 = new createObj2('..','..');
    //How to add setter in this scenario??

1 Ответ

0 голосов
/ 22 ноября 2018

Добавление геттера / сеттера в объект:

let objLit = {
    name: 'asas',
    name2: 'assad',
    get name3() {
        return this._name3
    },
    set name3(value) {
        this._name3 = value
    }
}

В заводской функции:

function createObj(param1, param2) {
    return {
        set name1(value) {
            param1 = value
        },
        set name2(value) {
            param2 = value
        },
        get fullName() {
            return `${param1} {param2}`
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...