Javascript 中的 setter 如何工作?
How do setters work in Javascript?
具体来说,它如何与这个 Codecadamy 示例相关联?
let person = {
_name: 'Lu Xun',
_age: 137,
set age(ageIn) {
if (typeof ageIn === 'number') {
this._age = ageIn;
}
else {
console.log('Invalid input');
return 'Invalid input';
}
}
};
我不明白为什么他们把 ageIn 放在 age() 里面,它有什么作用?
谢谢!
A setter 是一个在您尝试更改参数时执行的函数。
set age(ageIn)
在上面的 setter 函数中,他们试图在将其分配给对象的 _age 属性 之前确定他们试图设置的参数是否为数字。仅当用户将值设置为 person.age=140 时才会调用此方法,它会将 person._age 更新为 140。
但是,如果用户试图直接更新 _age 属性,它将不会执行此方法,而是直接更新 person._age
这是对 setters https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
有更多了解的有用资源
希望这对您有所帮助。快乐编码
具体来说,它如何与这个 Codecadamy 示例相关联?
let person = {
_name: 'Lu Xun',
_age: 137,
set age(ageIn) {
if (typeof ageIn === 'number') {
this._age = ageIn;
}
else {
console.log('Invalid input');
return 'Invalid input';
}
}
};
我不明白为什么他们把 ageIn 放在 age() 里面,它有什么作用?
谢谢!
A setter 是一个在您尝试更改参数时执行的函数。
set age(ageIn)
在上面的 setter 函数中,他们试图在将其分配给对象的 _age 属性 之前确定他们试图设置的参数是否为数字。仅当用户将值设置为 person.age=140 时才会调用此方法,它会将 person._age 更新为 140。
但是,如果用户试图直接更新 _age 属性,它将不会执行此方法,而是直接更新 person._age
这是对 setters https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
有更多了解的有用资源希望这对您有所帮助。快乐编码