我正在学习有关 Typescript 类的教程,教学人员创建了一个类和一些 setter/getter 方法。但是当我读到时打字稿文档 https://www.typescriptlang.org/docs/handbook/classes.html方法有些不同。有人可以帮助我理解这两种方法之间的区别。
方法一:
class Student {
private _name: string;
constructor(name:string) {
this._name=name;
}
getName = (): string => {
return this._name;
}
setName = (name: string) => {
this._name = name;
}
}
方法2:
class Student {
private _name: string;
constructor(name:string) {
this._name=name;
}
public get name(): string {
return this._name;
}
public set name(value: string) {
this._name = value;
}
}
看一看。在方法 1 中,我们将 getter/setter 编写为普通函数,但在方法 2 中,使用了关键字 get/set。有人可以帮助我理解这两种方法之间的区别。
您使用它们的方式有所不同。在第一种情况下,您需要显式调用get/set
方法。在第二个你可以使用name
就像类上的实际字段一样,运行时将调用get/set
自动访问器。
考虑将字符附加到名称的简单示例:
方法一
let s = new Student();
s.setName(s.getName() + "A") // we need to explicitly call the get/ set methods
方法2
let s = new Student();
s.name += "A" // we can use += and the get/set accessors will get called for us
幕后的get/set
访问器方法(方法 2)将使用对象.defineProperty https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)