亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 錯誤:無法讀取未定義的屬性“推送”

JavaScript 錯誤:無法讀取未定義的屬性“推送”

智慧大石 2021-09-04 17:38:41
我收到此錯誤,但無法弄清楚原因:this._courses[courseName].push(dish); ^類型錯誤:無法在 Object.addDishToCourse 讀取未定義的屬性“推送”   let menu = {        _courses: {            appetizers: [],            mains: [],            desserts: [],            get appetizers() {                return this.appertizers;            },            set appetizers(newAppetizer) {                this.appetizers = newAppetizer;            },            get mains() {                return this.mains            },            set mains(newMain) {                this.mains = newMain;            },            get desserts() {                return this.desserts;            },            set desserts(newDessert) {                this.desserts = newDessert;            },        },        get courses() {            return {                appetizers: this._courses.appetizers,                mains: this._courses.mains,                desserts: this._courses.desserts            };        },            addDishToCourse(courseName, dishName, dishPrice) {            const dish = {                name: dishName,                price: dishPrice,            };                this._courses[courseName].push(dish);        },            getRandomDishFromCourse(courseName) {            const dishes = this._courses[courseName];            const randomIndex = Math.floor(Math.random() * dishes.length);            return dishes[randomIndedx];        },        generateRandomMeal() {            const appetizer = this.getRandomDishFromCourse("appetizers");            const main = this.getRandomDishFromCourse("mains");            const dessert = this.getRandomDishFromCourse("desserts");            const totalPrice = appetizer.price + main.price + dessert.price;            return `Your meal is ${appetizer.name}, ${main.name}, ${dessert.name}. Your total is $${totalPrice}.`        }        }    
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

您不能擁有一個屬性 getter 和一個完全相同名稱的屬性。一個覆蓋另一個。但是,由于您正在實現默認行為,因此這里并沒有真正指向屬性 getter 和 setter。


如果您聲明_courses為:


    _courses: {

        appetizers: [],

        mains: [],

        desserts: [],

    }

并且不要使用 getter setter,它應該可以按您的預期工作。


如果您確實想在此處使用屬性設置器和獲取器,則必須為存儲值的基礎屬性指定與 getter/setter 不同的名稱。


查看完整回答
反對 回復 2021-09-04
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您的代碼中有一個錯字:


get appetizers() {

    return this.appertizers; // <-- Typo: should be appetizers

}

此外,如果您仍然遇到問題,請確保您獲得了預期的結果。例如,嘗試運行控制臺日志以查看它是否產生您期望的結果。


console.log(this._courses[courseName]);


查看完整回答
反對 回復 2021-09-04
  • 3 回答
  • 0 關注
  • 337 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號