Makosa ya kipindwa cha JavaScript
- Kabla Hisia ya JS
- Pya Kiongozi ya hisia ya JS
JavaScript 访问器(Getter 和 Setter)
ECMAScript 5 (2009) 引入了 Getter 和 Setter。
Getter 和 Setter 允许您定义对象访问器(被计算的属性)。
JavaScript Getter(get 关键词)
Mfano huu unaotumia lang
属性来获取 language
Jaribu ya ukweli.
mwingineza
// Create object: var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language; } }; // Use getter to display data from the object: document.getElementById("demo").innerHTML = person.lang;
JavaScript Setter(set 关键词)
Mfano huu unaotumia lang
Jaribu ya kumaliza kwa kifaa. language
Jaribu ya ukweli.
mwingineza
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang; } }; // Use setter to set object properties: person.lang = "en"; // Show data from the object: document.getElementById("demo").innerHTML = person.language;
Fani ya JavaScript au Getter?
Matokeo ya pili ya kina inatokea kwa nini?
Mfano 1
var person = { firstName: "Bill", lastName : "Gates", fullName : function() { kutumia this.firstName + " " + this.lastName; } }; // Kwa kusoma tabia ya kufikia data kutoka kwenye kifaa: document.getElementById("demo").innerHTML = person.fullName();
Mfano 2
var person = { firstName: "Bill", lastName : "Gates", get fullName() { kutumia this.firstName + " " + this.lastName; } }; // Use getter to display data from the object: document.getElementById("demo").innerHTML = person.fullName;
Mfano 1 anafikia kifaa cha kina kwa sababu ya programu: person.fullName().
Mfano 2 anafikia kifaa cha kina kwa ukweli: person.fullName.
Mfano wa pili unaofaa kwa ukurasa wa kawaida.
Kawaida ya data
Kwa kuitumia getter na setter, JavaScript inasababisha kwa kumaliza data zaidi ya kawaida.
kwenye mada hii, tumekuwa kuitumia lang
Mafanikio yanaonyesha kwa ukingo mkubwa wa kifaa cha kifaa. language
Jaribu ya ukweli:
mwingineza
// Create object: var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language.toUpperCase(); } }; // Use getter to display data from the object: document.getElementById("demo").innerHTML = person.lang;
kwenye mada hii, tumekuwa kuitumia lang
athari inahifadhi thamani kubadilika katika language
katika mafaa:
mwingineza
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang.toUpperCase(); } }; // Use setter to set object properties: person.lang = "en"; // Show data from the object: document.getElementById("demo").innerHTML = person.language;
Kwa nini kutumia Getter na Setter?
- ina uwezo wa kubadilika na mbinu ya kuchukua nafasi ya lugha
- ina uwezo wa kumaliza kiwango cha lugha na mbinu ya kufanya
- ina uwezo wa kubadilika na data zaidi ya thamani
- michukue kazi ya kuharibika
mwingineza wa namba kina
mwingineza
var obj = { counter : 0, get reset() { this.counter = 0; }, get increment() { this.counter++; }, get decrement() { this.counter--; }, set add(value) { this.counter += value; }, set subtract(value) { this.counter -= value; } }; // Kufanya kipengele cha kina: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; Object.defineProperty()
Object.defineProperty()
kitu cha kufanya kwa mbinu ya maelezo na mawasiliano:
mwingineza
// 定义对象 var obj = {counter : 0}; // 定义 setters Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (value) {this.counter -= value;} }); // Kufanya kipengele cha kina: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
Matokeo wa kina
Internet Explorer 8 na zaidi ya hayana huzingatia Getter na Setter:
Nasi | 9.0 | Nasi | Nasi | Nasi |
- Kabla Hisia ya JS
- Pya Kiongozi ya hisia ya JS