تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ همایون
چرا Property هایی که با Setter و Getter داخل Constructor تعریف میشن, Clone نمیشن؟
جامعه جاوا اسکریپت ایجاد شده در ۰۷ آبان ۱۴۰۰

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

سلام دوست عزیز

سامان رسولی ۱۰ مرداد ۱۴۰۱، ۱۷:۲۸

درود وقت به خیر

در حالت دوم شما داری از reference استفاده میکنید و عملا میاین یک نمونه از شی می‌سازید این یعنی هر کدوم از نمونه‌های میسازید یک متد سازنده جداگونه دارند و باهم یکسان نیستند وطبیعی هست این عمل که موقت clone بشه

بهترین پاسخ
علی رضوی ۱۱ مرداد ۱۴۰۱، ۱۶:۵۳