的JavaScript getter和setter方法:
通常setter和getter方法遵循JavaScript對象的語法如下。一個對象用多個屬性創建。 setter方法有一個參數,而getter方法沒有參數。兩者都是功能。
對於已經在對象內創建的給定屬性,set方法通常是一個if/else語句,該屬性直接訪問並隨後通過代碼a.k.a.「set」分配,隨時驗證輸入。這通常是通過使用if(typeof [arg] ==='某種類型的值,例如:number,string或boolean')語句來完成的,那麼代碼塊通常會分配這個。(特定)屬性名稱到論點。 (有時用消息記錄到控制檯。)但它不需要返回任何東西;它只是設置這個特定屬性來評估參數。然而,else語句幾乎總是在控制檯上有一個(錯誤)消息日誌,提示用戶爲符合條件的屬性鍵值輸入一個不同的值。
基本上,getter方法是相反的。它建立一個沒有任何參數的函數來「獲取」,即當你調用你剛纔設置的特定屬性時返回一個(nother)值/屬性。它「獲取」了與通常調用該對象屬性時所獲得的結果不同的東西。
對於不想直接修改的屬性鍵值,可以很容易地看到setter和getter的值,除非滿足某些條件。對於此類型的屬性,請使用下劃線繼續屬性名稱,並使用getter來允許您在不使用下劃線的情況下調用屬性。然後使用setter來定義可以訪問和分配該屬性的鍵值的條件,即a.a.「set」。例如,我將爲這個對象的屬性包含兩個基本的setter和getters。注:我使用一個常量變量,因爲對象保持可變(創建後)。
const person = {
_name: 'Sean';
_age: 27;
set age(ageIn) {
if (typeof ageIn === 'number') {
this._age = ageIn;
}
else {
console.log(`${ageIn} is invalid for the age's key-value. Change ${ageIn} to/into a Number.`);
return 'Invalid Input.';
}
},
get age() {
return this._age;
},
set name(nameIn) {
if (typeof nameIn === 'string') {
this._name = nameIn;
} else {
console.log(`Change ${nameIn} to/into a(ny) String for the name's
key-value.`);
return 'Invalid Input.';
}
},
get name() {
return this._name;
}
};
它有趣的是,當你嘗試設置/分配的_age財產新的鍵值,因爲它滿足了,如果條件才能被成功分配,這意味着並不是所有的任務都有效等。
person.age = 'twenty-eight'; /* output: twenty-eight is invalid for the
age's key-value. Change twenty-eight to/into a Number. */
console.log(person.age); // output: 27 (twenty-eight was never assigned)
person.age = 28; // output: none
console.log(person.age); // output: 28
請注意我是如何通過getter方法通過person.age屬性訪問person._age屬性的。另外,與年齡限制僅限於數字的輸入類似,name屬性的輸入現在僅限於/設置爲字符串。
希望這有助於澄清事情! 此外,一些鏈接,瞭解更多:
https://johnresig.com/blog/javascript-getters-and-setters/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
https://www.infragistics.com/community/blogs/infragistics/archive/2017/09/19/easy-javascript-part-8-what-are-getters-and-setters.aspx
嘆息。詢問後,我立即找到相關鏈接。它是Javascript 1.5: – chinchilla 2011-03-23 17:42:56
它適用於某些版本的Chrome,但最好使用沒有關鍵字的getters/setter。 – 2011-03-23 17:44:10
你可以發佈你在答案中找到的相關鏈接,等待一段時間(這是強制性的),然後接受答案。這將有助於其他人尋找同樣的東西,你可能會得到一些聲望點,並且你會感覺到隨着互聯網更好地發展而產生的溫暖模糊感。 – 2011-03-23 18:00:32