Mat*_*ger 5 javascript resharper
我对 javascript 很陌生,我正在尝试迭代字典键/值。(是的,我在这里读了一些帖子,但没有找到答案。)
这是我的字典:
showhidedict = {
0: ["a"],
1: [],
2: ["a", "b"],
3: []
};
Run Code Online (Sandbox Code Playgroud)
这是我的迭代:
for (var value in showhidedict)
$("#" + showhidedict[value]).hide();
Run Code Online (Sandbox Code Playgroud)
resharper 建议我将 -check 添加 hasOwnProperty 到循环中:
if (showhidedict.hasOwnProperty(value))
Run Code Online (Sandbox Code Playgroud)
但为什么?
-check hasOwnProperty 检查对象是否具有属性(这里是字典是否包含键),对吗?但我真的需要支票吗?由于我迭代了键,我知道所有键都必须存在。还有其他原因需要添加支票吗?
通常建议始终使用 hasOwnProperty,因为它指示对象本身是否具有指定的属性,并避免在其原型链中查找。
一般来说,您永远不应该假设代码运行的环境,或者您的对象何时由不同的库创建,或者原型是否已扩展,因此 hasOwnProperty 使您的代码“更安全”。
有关原型链的更多信息。
引用Object.prototype.hasOwnProperty()。
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |