Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка в геттере (https://javascript.ru/forum/misc/76923-oshibka-v-gettere.html)

Lord_Jaraxxus 27.02.2019 16:22

Ошибка в геттере
 
Не вижу причину ошибки missing ) after argument list, не понимаю,
в чем проблема, заранее спасибо.

function User(fullName) {


this.fullName = fullName;
Object.defineProperties(this, 'fullName',
get: function(){ //!!!
return this.firstName + ' ' + this.lastName;
},
set: function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
)
}

Nexus 27.02.2019 16:24

function User(fullName) {
    this.fullName = fullName;

    Object.defineProperties(this, 'fullName', {
        get: function() {
            return this.firstName + ' ' + this.lastName;
        },

        set: function(value) {
            var names = value.split(' ');
            this.firstName = names[0];
            this.lastName = names[1];
        }
    })
}

NeoN 27.02.2019 18:21

Цитата:

Сообщение от Nexus (Сообщение 504179)
function User(fullName) {
    this.fullName = fullName;

    Object.defineProperties(this, 'fullName', {
        get: function() {
            return this.firstName + ' ' + this.lastName;
        },

        set: function(value) {
            var names = value.split(' ');
            this.firstName = names[0];
            this.lastName = names[1];
        }
    })
}

только разве это будет работать?
defineProperties принимает ведь только 2 аргумента
думаю, тут еще вместо defineProperties должно быть defineProperty

NeoN 27.02.2019 18:22

полагаю, этот код более правильный
function User(fullName) {
    this.fullName = fullName;

    Object.defineProperty(this, 'fullName', {
        get: function() {
            return this.firstName + ' ' + this.lastName;
        },

        set: function(value) {
            var names = value.split(' ');
            this.firstName = names[0];
            this.lastName = names[1];
        }
    })
}

Nexus 27.02.2019 18:34

Цитата:

Сообщение от NeoN
только разве это будет работать?

Я только синтаксис поправил.

upd. вот так будет правильно с defineProperties:
function User(fullName) {
    this.fullName = fullName;

    Object.defineProperties(this, {
        fullName: {
            get: function() {
                return this.firstName + ' ' + this.lastName;
            },

            set: function(value) {
                var names = value.split(' ');
                this.firstName = names[0];
                this.lastName = names[1];
            }
        }
    });
}


Часовой пояс GMT +3, время: 01:33.