JavaScript ¶ÔÏó·ÃÎÊÆ÷
JavaScript ·ÃÎÊÆ÷£¨Getter ºÍ Setter£©
ECMAScript 5 (2009) ÒýÈëÁË Getter ºÍ Setter¡£
Getter ºÍ Setter ÔÊÐíÄú¶¨Òå¶ÔÏó·ÃÎÊÆ÷£¨±»¼ÆËãµÄÊôÐÔ£©¡£
JavaScript Getter£¨get ¹Ø¼ü´Ê£©
±¾ÀýʹÓà lang ÊôÐÔÀ´»ñÈ¡ language ÊôÐÔµÄÖµ¡£
ʵÀý
// ´´½¨¶ÔÏó£º var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language; } }; // ʹÓà getter À´ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.lang;
JavaScript Setter£¨set ¹Ø¼ü´Ê£©
±¾ÀýʹÓà lang ÊôÐÔÀ´ÉèÖà language ÊôÐÔµÄÖµ¡£
ʵÀý
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang; } }; // ʹÓà setter À´ÉèÖöÔÏóÊôÐÔ£º person.lang = "en"; // ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.language;
JavaScript º¯Êý»¹ÊÇ Getter£¿
ÏÂÃæÁ½¸öÀý×ÓµÄÇø±ðÔÚÄÄÀ
Àý×Ó 1
var person = {
firstName: "Bill",
lastName : "Gates",
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
// ʹÓ÷½·¨À´ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º
document.getElementById("demo").innerHTML = person.fullName();
Àý×Ó 2
var person = {
firstName: "Bill",
lastName : "Gates",
get fullName() {
return this.firstName + " " + this.lastName;
}
};
// ʹÓà getter À´ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º
document.getElementById("demo").innerHTML = person.fullName;
Àý×Ó 1 ÒÔº¯ÊýÐÎʽ·ÃÎÊ fullName£ºperson.fullName()¡£
Àý×Ó 2 ÒÔÊôÐÔÐÎʽ·ÃÎÊ fullName£ºperson.fullName¡£
µÚ¶þ¸öÀý×ÓÌṩÁ˸ü¼ò½àµÄÓï·¨¡£
Êý¾ÝÖÊÁ¿
ʹÓà getter ºÍ setter ʱ£¬JavaScript ¿ÉÒÔÈ·±£¸üºÃµÄÊý¾ÝÖÊÁ¿¡£
ÔÚ±¾ÀýÖУ¬Ê¹Óà lang ÊôÐÔÒÔ´óдÐÎʽ·µ»Ø language ÊôÐÔµÄÖµ£º
ʵÀý
// Create an object: var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language.toUpperCase(); } }; // ʹÓà getter À´ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.lang;
ÔÚ±¾ÀýÖУ¬Ê¹Óà lang ÊôÐÔ½«´óдֵ´æ´¢ÔÚ language ÊôÐÔÖУº
ʵÀý
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang.toUpperCase(); } }; // ʹÓà getter À´ÉèÖöÔÏóÊôÐÔ£º person.lang = "en"; // ÏÔʾÀ´×Ô¶ÔÏóµÄÊý¾Ý£º document.getElementById("demo").innerHTML = person.language;
ΪʲôʹÓà Getter ºÍ Setter£¿
- ËüÌṩÁ˸ü¼ò½àµÄÓï·¨
- ËüÔÊÐíÊôÐԺͷ½·¨µÄÓï·¨Ïàͬ
- Ëü¿ÉÒÔÈ·±£¸üºÃµÄÊý¾ÝÖÊÁ¿
- ÓÐÀûÓÚºǫ́¹¤×÷
Ò»¸ö¼ÆÊýÆ÷ʵÀý
ʵÀý
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;
}
};
// ²Ù×÷¼ÆÊýÆ÷£º
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
Object.defineProperty()
Object.defineProperty() ·½·¨Ò²¿ÉÓÃÓÚÌí¼Ó Getter ºÍ Setter£º
ʵÀý
// ¶¨Òå¶ÔÏó 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;} }); // ²Ù×÷¼ÆÊýÆ÷£º obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
ä¯ÀÀÆ÷Ö§³Ö
Internet Explorer 8 »ò¸üÔçµÄ°æ±¾²»Ö§³Ö Getter ºÍ Setter£º
Yes | 9.0 | Yes | Yes | Yes |