class Movie {
constructor(movieName, category ) {
this._movieName = movieName;
this._category = category;
}
showMovieName() {
return `${movieName}`;
}
}
const movie1 = new Movie("Avengers", "superheroes");
console.log(movie1.showMovieName());
我有一個電影類和兩個帶下劃線的欄位。我需要創建一個回傳電影標題的方法。我怎樣才能做到這一點?現在在控制臺中,未定義錯誤 movieName
uj5u.com熱心網友回復:
您的所有欄位都不是私有的。只需movieName加上下劃線前綴。
showMovieName() {
return `${this._movieName}`;
}
uj5u.com熱心網友回復:
在您的代碼中,您需要更改return `${movieName}`;為return `${this._movieName}`;
更多資訊
您的示例使用類的公共欄位宣告語法來宣告名為_movieName和的兩個公共實體屬性_category。
使用下劃線作為屬性名稱前綴是一種老式(盡管仍然很常見)的方式來指示屬性是私有的(盡管這種方法不提供任何強制執行)。
JavaScript 現在有私有類欄位。這些可以使用#前綴(“哈希名稱語法”)宣告,并且不能通過類本身之外的任何方式以任何方式訪問。
私有欄位是在建構式運行之前添加的,并且不會被繼承。
class Movie {
#movieName;
constructor(movieName) {
this.#movieName = movieName;
}
showMovieName() {
return `${this.#movieName}`;
}
}
const movie1 = new Movie('Avengers');
console.log(movie1.showMovieName());
uj5u.com熱心網友回復:
目前 JS 中沒有真正的私有屬性,但是,您正在嘗試訪問一個必須使用的屬性this.,請參見下文
class Movie {
constructor(movieName, category ) {
this._movieName = movieName;
this._category = category;
}
showMovieName() {
return `${this._movieName}`;
}
}
const movie1 = new Movie("Avengers", "superheroes");
console.log(movie1.showMovieName());
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/523686.html
標籤:javascript
