JavaScript对象访问器是用来访问和更新对象的,用于这个功能的两个关键词是getter和setter。JavaScript在2009年的ES5中引入了getter和setter。
在本教程中,我们将了解什么是getter和setter,以及如何在JavaScript中利用它们,同时还将了解为什么要使用JavaScript的get或set方法。除此之外,我们还将讨论 object.defineProperty()。最后,我们将介绍一下哪些浏览器支持set和get方法。所以,让我们开始吧。
获取关键字
顾名思义,get方法是用来检索一个值的,在技术领域,它可以被定义为一个对象属性与一个函数的绑定,当需要该属性时,该函数会被调用。在我们访问get方法之前,我们无法获得该值。然而,我们要事先定义对象的属性。
例子
const player={
name: "Hazard",
club: "Chelsea",
shirtNo: 10,
get clubName(){
return this.club;
}
};
alert(player.clubName);
在这个例子中,我们使用 clubName属性来获取俱乐部属性的值。

设置关键字
它与get关键字相反。它是用来设置一个值的。在技术领域,当我们想设置一个属性时,它可以被定义为一个对象属性与一个函数的绑定。
例如
const player={
name: "",
club: "Chelsea",
shirtNo: 10,
//setting a player name
set setName(setName){
this.name=setName;;
}
};
//passing/setting the name i-e object property using a setter
player.setName="Mount";
//lets see the data through an alert
alert(player.name);
在这个例子中,我们首先创建了一个对象。在该对象中,我们使用set关键字创建了一个set方法,在该方法中我们设置了传递给它的播放器的名字。在对象之后,我们设置了播放器的名字,然后我们用一个警报来显示结果。
函数与获取器
现在你一定在想,它们不是一样的吗,答案是肯定的,也是否定的。让我们用例子来解释这个问题。
例子 函数
const player = {
name : "Hazard",
club : "Chelsea",
shirtNo : 10,
myFunc : function() {
return this.name+" plays for "+this.club;
}
};
alert(player.myFunc());

获取器的例子
const player = {
name : "Hazard",
club : "Chelsea",
shirtNo : 10,
get myFunc() {
return this.name+" plays for "+this.club;
}
};
alert(player.myFunc);

在函数的例子中,我们将 myFunc()作为一个函数获得,即player.myFunc()。然而,在getter的例子中,我们访问的是 属性i-e player.myFunc()。现在我们知道,getter的语法比函数的语法更简单易读。
JavaScript中的Object.defineProperty()
JavaScript的Object.defineProperty()用于添加getter和setter。它需要三个参数,Object.defineProperty()的语法是。
Object.defineProperty(objectName, propertyName, objectDescriptor)
第一个参数是对象的名称,第二个参数是属性的名称,第三个参数是对象的描述。
举例来说
//define an object
const player={
name:"Eden"
}
//now we get a property of an object
Object.defineProperty(player, "getName",{
get: function (){
return this.name;
}
});
//now we set the property of an object
Object.defineProperty(player, "setName",{
set:function(val){
this.name=val;
}
});
console.log(player.name);
//let's give the player a full name
player.setName="Hazard";
console.log(player.name);
在这个例子中,首先,我们定义了一个对象。之后使用**Object.defineProperty()**我们设置了setter和getter。现在,当我们第一次使用console.log时,玩家的名字是 "Eden"。但是当我们使用setter设置名字的时候,玩家的名字就变成了我们所设置的Hazard。

诚然,当我们使用getter和setter时,JavaScript可以保证更好的数据质量。
比如说
//creating an object
const player = {
name : "Hazard",
club : "Chelsea",
shirtNo : 10,
get myFunc() {
return this.name+" plays for "+this.club.toLowerCase();
}
};
// using get display data
alert(player.myFunc);
在这个例子中,我们使用了对象player的名字和俱乐部属性。我们将其转换为大写和小写,并返回该值。这个解决方案看起来像这样。

为什么使用getters和setters?
- 可以在幕后完成和执行任务。
- 如前所述,使我们确保更好的数据质量
- 还具有更简单的语法
- 属性和方法的语法是相似的
哪些浏览器支持这个?
| 微软Edge | Opera | Safari | Mozilla firefox | 谷歌浏览器 |
|---|---|---|---|---|
| 9.0及以上版本 | 是 | 是的 | 是的 | 是的 |
总结
在这篇文章中,我们几乎学到了所有关于JavaScript评估器的知识,也就是JavaScript中的get和set方法。我们还稍微深入地解释了什么是Object.defineProperty()。除此之外,我们还讨论了在JavaScript中使用评估器的好处以及哪些浏览器支持评估器。通过使用评估器,开发者可以让他的代码在幕后执行操作,并保证数据的安全。由于它有更简单的语法,它也使我们的代码更干净。
