这篇文章将为大家详细讲解有关JavaScript的对象访问器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
JavaScript访问器(Getter和Setter),ECMAScript 5(2009)介绍了Getter和Setters。 Getters和setter允许您定义对象访问器(Computed Properties)。
JavaScript Getter(get关键字)
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<h3>JavaScript Getters和Setters</h3>
<p> Getters和setter允许您通过方法获取和设置属性。</p>
<p>此示例使用lang属性获取语言属性的值。</p>
<p id="demo"></p>
<script>
// 新建一个对象。
var person = {
firstName: "John",
lastName : "Doe",
language : "en",
get lang() {
return this.language;
}
};
// 使用getter显示来自对象的数据:
document.getElementById("demo").innerHTML = person.lang;
</script>
</body>
</html>
JavaScript Setter (set关键字)
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Getters和Setters</title>
<body>
<h3> JavaScript Getters和Setters </h3>
<p> Getters和setter允许您通过方法获取和设置属性。</p>
<p>此示例使用lang属性设置语言属性的值。</p>
<p id="demo"></p>
<script>
// Create an object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
set lang(value) {
this.language = value;
}
};
// Set a property using set:
person.lang = "en";
// Display data from the object:
document.getElementById("demo").innerHTML = person.language;
</script>
</body>
</html>
使用JavaScript函数还是Getter?
这两个例子之间有什么区别?
示例1:
var person = {
firstName: "John",
lastName : "Doe",
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
// 使用方法显示对象的数据:
document.getElementById("demo").innerHTML = person.fullName();
示例2:
var person = {
firstName: "John",
lastName : "Doe",
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以大写形式返回属性的值:
// 创建一个对象:
var person = {
firstName: "John",
lastName : "Doe",
language : "en",
get lang() {
return this.language.toUpperCase();
}
};
// 使用getter显示来自对象的数据:
document.getElementById("demo").innerHTML = person.lang;
lang在此示例中,使用该属性将大写值存储在language属性中:
var person = {
firstName: "John",
lastName : "Doe",
language : "",
set lang(lang) {
this.language = lang.toUpperCase();
}
};
// 使用setter设置对象属性:
person.lang = "en";
// 显示来自对象的数据:
document.getElementById("demo").innerHTML = person.language;
为什么使用Getter和Setter?
● 它提供了更简单的语法
● 它允许属性和方法的语法相同
● 它可以确保更好的数据质量
● 在幕后做事情很有用
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<h3> JavaScript Getters和Setters </h3>
<p>完美的创建反对象:</p>
<p id="demo"></p>
<script>
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;
}
};
// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
// Display the counter:
document.getElementById("demo").innerHTML = obj.counter;
</script>
</body>
</html>
Object.defineProperty()
Object.defineProperty()方法还可用于添加Getters和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;}
});
// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
浏览器支持
Internet Explorer 8或更早版本不支持Getters和Setter:
Internet Explorer | Chrome | FireFox | Safari | Opera |
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
9.0+ | 支持 | 支持 | 支持 | 支持 |
关于JavaScript的对象访问器是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。