سلام. در قطعه کد اول من با استفاده از 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);