为什么";setter是在没有getter的情况下定义的";JSHint错误
Why is "setter is defined without getter" a JSHint error?
参考jsfiddle
var obj = {
set bla(k) {
console.log(k);
}
};
JSHint将其标记为"setter是在没有getter的情况下定义的"。我确信有办法关闭它,但为什么这是一个错误呢?我所看到的所有JSHint标志都有一个合理的解释。我想不出为什么这是一件坏事。
我认为JSHint没有充分的理由警告这种情况。我看不到规范中的任何内容(http://www.ecma-international.org/publications/standards/Ecma-262.htm,第30-31页(,如果有setter,则需要有getter,反之亦然,并且很容易想象一个setter并不意味着getter。例如,您可能希望在setter中设置脏标志。没有理由定义getter。
我没有在JSHint的来源或它的历史中看到任何理由。
这很可能是因为可疑而被标记的。只写属性是一件很不寻常的事情。你故意这么做的几率远低于你犯错误的几率。这类似于编写foo == null
时的警告——它不违法,甚至不一定是错误的,但它更有可能是错误的,而不是正确的。
你也可以有这样的代码,你会得到相同的JSHint错误:
appSession: {
officername: "Denis Test",
get getOfficername() {
return `${this.officername}`;
},
set setOfficername(name) {
this.officername = name;
}
};
但是,如果getter和setter的名称与下面相同,并且前缀get
和set
在它们之前,那么错误就会消失:
get Officername() {
return `${this.officername}`;
},
set Officername(name) {
this.officername = name;
}
请注意,在这两个示例中,我对方法的命名方式有所不同。对于您的情况,添加一个与"set"方法同名的get
方法,您的错误就会消失。
var obj = {
set bla(k) {
console.log(k);
}
get bla(){
console.log(obj.bla);
}
};
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 铬:“;未捕获的语法错误:意外的标记:"
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- Array.length似乎不起作用;console.log则显示其他情况
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 为什么"构造函数是一种特殊情况;
- "“照片擦除”;画廊关闭自己的图像点击在小图像的情况下
- 得到"SCRIPT70:许可被拒绝”;仅在EDGE浏览器/JJAVASCRIPT错误的情况下
- 为什么"对象未定义”;在这种情况下没有抛出错误
- "最大长度“;在输入类型=“0”的情况下不工作;数字“;在html文本框中
- 如何在没有Jquery的情况下获取文本中一行的大小;.css('lineHeight')"和“