JavaScript:防止无意中创建新属性
JavaScript: prevent unintentional creation of new property
错别字时有发生,有时在JavaScript中很难跟踪它们。以下面这个为例(想象一下它在一些代码之间):
// no error. I would like a warning
document.getElementById('out').innerHtml = "foo";
对于未声明的变量,严格模式有帮助:
"use strict";
var myHTML = "foo";
myHtml = "bar"; // -> error
但是它在上面的例子中不起作用。是否有程序或模式可以捕获这些错误?我试过JSLint和JavaScript Lint,但他们没有捕捉到它。
理想情况下,我希望这仍然工作(没有警告):
// should work (without warning)
function MyClass(arg) {
this.myField = arg;
}
使用WebStorm这样的IDE对检测这类错误有很大帮助。
为了防止意外地给对象添加属性,你可以冻结它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
在ES6中,你可以使用代理来检测这些错误:http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/
好吧,这就是动态类型编程语言的代价。因为可以在运行时添加属性,所以没有真正的解决方案来检测代码中的拼写错误。
但是,您可以在Element
原型中添加innerHtml
函数,在内部调用innerHTML
以消除某些拼写错误,但我绝对不建议这样做。
正如其他注释所建议的那样:一个好的IDE可以帮助您识别错别字。我只使用WebStorm和VisualStudio,它们都能够检测未声明或未使用的函数。
相关文章:
- 创建新属性后的 JSON 空属性
- chart.js 2.0为数据集添加了新属性
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- 为for循环中的对象添加新属性
- 复制第一个属性's值,然后使用第一个属性的值创建新属性
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- 如何向JSON数组添加新属性
- 在对象上迭代并添加新属性
- 在AngularJS中对指令的隔离作用域设置新属性
- 在knocket js中应用绑定后,向视图模型添加新属性
- 护照个人资料未通过新属性
- 如何在 CKEditor 表的单元格属性中添加新属性
- 无法向 Mongoose 查询返回的对象添加新属性
- 有没有办法让 Javascript 在将新属性添加到给定对象时抛出错误
- W3C 设置新属性
- 是否可以向现有 JSON 数据添加新属性
- 使用 contructor 参数将新属性添加到原型
- 如何为 html5 标签创建新属性
- 创建新属性 - JS / 边缘动画
- 和服:修改数据、分解字符串和添加新属性的功能