这篇文章将为大家详细讲解有关JavaScript的对象访问器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
目前成都创新互联公司已为近千家的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、融安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。JavaScript访问器(Getter和Setter),ECMAScript 5(2009)介绍了Getter和Setters。 Getters和setter允许您定义对象访问器(Computed Properties)。
JavaScript Getter(get关键字)
js JavaScript Getters和Setters
Getters和setter允许您通过方法获取和设置属性。
此示例使用lang属性获取语言属性的值。
JavaScript Setter (set关键字)
JavaScript Getters和Setters JavaScript Getters和Setters
Getters和setter允许您通过方法获取和设置属性。
此示例使用lang属性设置语言属性的值。
使用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?
● 它提供了更简单的语法
● 它允许属性和方法的语法相同
● 它可以确保更好的数据质量
● 在幕后做事情很有用
js JavaScript Getters和Setters
完美的创建反对象:
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+ 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 标题名称:JavaScript的对象访问器是什么-创新互联 网址分享:http://cdxtjz.cn/article/csdseh.html |