在这个特定的例子中,为什么作者在for中使用if.hasOwnProperty..循环模式
in this particular example, why did the author use the if...hasOwnProperty in a for...in loop pattern?
我已经阅读了以下文章,介绍了使用has-owne属性如何防止您枚举对象原型上定义的属性:
-MDN拥有属性
-如何检查对象是否具有JavaScript中的属性?
-for。。和hasOwnProperty
我想我知道这个模式通常是如何工作的,以及你为什么要使用它,但我仍然不明白为什么在Eloquent Javascript的CH 19的以下代码中,作者选择使用这个模式。。。
function elt(name, attributes) {
var node = document.createElement(name);
if (attributes) {
for (var attr in attributes)
if (attributes.hasOwnProperty(attr)) // <----------------
node.setAttribute(attr, attributes[attr]);
}
for (var i = 2; i < arguments.length; i++) {
var child = arguments[i];
if (typeof child == "string")
child = document.createTextNode(child);
node.appendChild(child);
}
return node;
}
顺便说一下,这个功能的用途是:
它创建一个具有给定名称和属性的元素,并附加它作为子节点获得的所有其他参数,自动转换字符串到文本节点。
有人能介绍一下这个特殊的例子吗?
结构for (var attr in attributes)
迭代所有可迭代属性,包括原型上的项。
如果您只想迭代实际直接分配给对象的属性,而不想迭代原型上的属性,那么您可以像所指向的代码一样使用.hasOwnProperty()
过滤掉它们。该代码将跳过原型上的任何可迭代属性,只迭代实际对象本身的属性。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 同位素库错误:未捕获错误无布局模式包装生产线8
- Is onfling available for html, html5
- Setting default onclick behavior for <img> tag in gene
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 有没有办法将Google Analytics for Web置于“试运行”模式,例如GA移动SDK
- 查找模式 遍历多个数组的 FOR 循环
- 在这个特定的例子中,为什么作者在for中使用if.hasOwnProperty..循环模式
- 示例variableInputs for Processing 2.0 javaScript模式是如何工作的?如何调整
- 在EmberJS应用中使用Bootstrap -for-ember创建Twitter引导模式
- 严格模式->更改了控制器结构,获取'键未定义'For In循环
- 为什么Javascript中的for循环比模式匹配更糟糕
- ReferenceError:严格模式禁止在for循环中隐式地创建全局属性
- AJAX 模式下的 jquery 选项卡帮助 for Safari
- 有人能解释一下为什么这个for循环打印出这个特定的模式吗?