Javascript 在ES6类中禁用getter?
可以为属性禁用getter吗?是否有意料之外的后果?我应该扔吗?返回未定义 我会Javascript 在ES6类中禁用getter?,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,可以为属性禁用getter吗?是否有意料之外的后果?我应该扔吗?返回未定义 我会在getter中抛出一个异常,以避免意外的不正确使用。如果您在那里定义了类,则没有名称的getter;尝试从Person的实例中读取name将产生未定义的(好像根本没有为该实例定义name)。这是由规范中的定义的,它表示如果属性是访问器属性,但其get操作是undefined,则获取属性的结果是undefined。(更多信息请参见下文。) 如果您想使尝试读取name成为一个错误,那么是的,实现一个getter并抛出
在getter中抛出一个异常,以避免意外的不正确使用。如果您在那里定义了类,则没有名称的getter;尝试从Person
的实例中读取name
将产生未定义的(好像根本没有为该实例定义name
)。这是由规范中的定义的,它表示如果属性是访问器属性,但其get
操作是undefined
,则获取属性的结果是undefined
。(更多信息请参见下文。)
如果您想使尝试读取name
成为一个错误,那么是的,实现一个getter并抛出
这两方面的例子:
类无错误{
集合名称(值){
}
}
设n=new NoError();
console.log(n.name);
类错误{
获取名称(){
抛出新错误(“'name'无法读取”);
}
集合名称(值){
}
}
设h=new HasError();
console.log(h.name)代码>在声明getter之前没有getter?试试看:(新人)。姓名
!谢谢你深思熟虑的回答。然而,我把JSHint错误与javascript错误混淆了。让警告保持沉默或是扔一把来实施它更明智吗?@MathieuBertin:这取决于你。:-)如果要读取要抛出的属性,请实现一个抛出的getter;如果希望它导致未定义,请使警告/错误静音。
class Person {
constructor(){}
set name(){
}
// delete get name() {}
}