为了账号安全,请及时绑定邮箱和手机立即绑定

使用方法和设置器有什么区别?

使用方法和设置器有什么区别?

幕布斯6054654 2023-10-14 19:27:58
例如:var person = {  firstName: "John",  lastName : "Doe",  language : "",  set lang(lang) {  this.language = lang.toUpperCase();}};person.lang = "en";console.log(person.language)var person1 = { firstName: "John", lastName : "Doe", language : function(a){return a.toUpperCase()}};console.log(person1.language('en'))这看起来完全一样,并且方法模式编写得较少,所以我为什么要使用 setter?
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

除了 getter 方法之外,我们还可以创建 setter 方法来重新分配对象内现有属性的值。setter 方法的示例:


const person = {

  _age: 37,

  set age(newAge){

    if (typeof newAge === 'number'){

      this._age = newAge;

    } else {

      console.log('You must assign a number to age');

    }

  }

};


请注意,在上面的示例中:


我们可以检查分配给 this._age 的值。

当我们使用setter方法时,只有数字值才会重新分配this._age

根据用于重新分配 this._age 的值,会有不同的输出。

然后使用setter方法:


    person.age = 40;

    console.log(person._age); // Logs: 40

    person.age = '40';        // Logs: You must assign a number to age


像 Age 这样的 Setter 方法不需要使用一组括号来调用。从语法上看,我们似乎正在重新分配属性的值。


与 getter 方法一样,使用 setter 方法也有类似的优点,包括检查输入、对属性执行操作以及显示对象应如何使用的明确意图。尽管如此,即使使用 setter 方法,仍然可以直接重新分配属性。例如,在上面的例子中,我们仍然可以直接设置._age:


person._age = 'forty-five'

console.log(person._age); // Prints forty-five


查看完整回答
反对 回复 2023-10-14
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信