چرا Property هایی که با Setter و Getter داخل Constructor تعریف میشن, Clone نمیشن؟

پرسیده شده
فعالیت 915 روز پیش
دیده شده 375 بار
0

سلام. در قطعه کد اول من با استفاده از Setter و Getter یک Property رو تعریف کردم و بعد کل Object رو با assign کپی کردم داخل یک Object دیگه کپی شد و همچنین در حالت دیگه هم به صورت مستقیم داخل Object تعریف کردم و کپی انجام میشه.

 

اما در قطعه کد دوم وقتی Property رو به استفاده از Setter و Getter داخل Constructor تعریف می کنم با استفاده از assign کپی نمیشه و فقط موقتی کپی میشه که اون رو به صورت مستقیم داخل Constructor تعریف و مقدار دهی کنم.

let user = {
    get firstName() {
        if(this._firstName === undefined) {
            this._firstName = 'Alex';
        }

        return this._firstName;
    },
    set firstName(param) {
        this._firstName = param;
    }
}

let user2 = {};

Object.assign(user2, user);

console.log(user2);
function _userObj() {
    Object.defineProperties(this, {
        firstName: {
            get: function () {
                if(this._firstName === undefined) {
                    this._firstName = 'Tony';
                }

                return this._firstName;
            },
            set: function (param) {
                this._firstName = param;
            }
        }
    });
}

let userObject = new _userObj;
let userObject2 = {};

Object.assign(userObject, userObject2);

console.log(userObject);
console.log(userObject2);

فایل پیوست

قاسمی
قاسمی

7 آبان 00