Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ES6类中禁用getter?_Javascript_Ecmascript 6_Es6 Class - Fatal编程技术网

Javascript 在ES6类中禁用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中抛出一个异常,以避免意外的不正确使用。

如果您在那里定义了类,则没有
名称的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() {} 
}