與我的期望相反,我無法在類方法initialize()中訪問我的類欄位myLibrary。
class ViewController {
myLibrary = new Library();
initialize() {
console.log(myLibrary); // undefined
我發現的唯一“解決方案”是將類外部的 myLibrary 宣告為全域變數。有沒有辦法在類中宣告欄位然后使用它們?
uj5u.com熱心網友回復:
JavaScript 類的作業方式與 Java 類不同。
要訪問物件的屬性,您需要宣告該物件,然后訪問它的屬性。它們不被視為當前范圍內的變數。
在方法內部,關鍵字this將為您提供關聯的物件。(請參閱“this”關鍵字如何作業?以獲得不太簡單的解釋)。
所以你需要this.myLibrary而不是僅僅myLibrary.
uj5u.com熱心網友回復:
class Library {
…
}
class ViewController {
constructor() {
this.myLibrary = new Library();
}
log() {
console.log(this.myLibrary);
}
}
const viewController = new ViewController();
viewController.log()
uj5u.com熱心網友回復:
用于this訪問物件的屬性。
class ViewController {
constructor(){
this.myLibrary = new Library();
}
initialize() {
console.log(this.myLibrary); //
}
來自 mdn 的示例:
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// Getter
get firstNameAndLastName() {
return this.calcFullName();
}
// Method
calcFullName() {
return `${this.firstName} ${this.lastName}`;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/450759.html
標籤:javascript 哎呀
上一篇:如何按元素的水平對齊文本?
下一篇:Java模型類中的封裝
