Makosa ya kipindwa cha JavaScript

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;

Jifunze tena

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;

Jifunze tena

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();

Jifunze tena

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;

Jifunze tena

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;

Jifunze tena

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;

Jifunze tena

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()

Jifunze tena

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;

Jifunze tena

Matokeo wa kina

Internet Explorer 8 na zaidi ya hayana huzingatia Getter na Setter:

Nasi 9.0 Nasi Nasi Nasi