gpt4 book ai didi

javascript - 在这个特定的示例中,作者为什么在 for...in 循环模式中使用 if...hasOwnProperty?

转载 作者:行者123 更新时间:2023-12-03 11:27:37 24 4
gpt4 key购买 nike

我已阅读以下有关使用 has own property 如何防止枚举对象原型(prototype)上定义的属性的文章:

-MDN hasOwnProperty

-How do I check if an object has a property in JavaScript?

-for..in and hasOwnProperty

我想我了解该模式的一般工作原理以及为什么要使用它,但我仍然不明白为什么在 Eloquent Javascript 第 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;
}

顺便说一句,这个函数的用途是:

It creates an element with the given name and attributes and appends all further arguments it gets as child nodes, automatically converting strings to text nodes.

有人可以引导我完成这个特定的示例吗?

最佳答案

结构for (var attr in attribute)迭代所有可迭代属性,包括原型(prototype)上的项。

如果您只想迭代实际直接分配给对象的属性,而不是原型(prototype)上的属性,那么您可以使用 .hasOwnProperty() 作为您的代码来过滤它们指出确实如此。该代码将跳过原型(prototype)上的任何可迭代属性,并且仅迭代实际对象本身的属性。

关于javascript - 在这个特定的示例中,作者为什么在 for...in 循环模式中使用 if...hasOwnProperty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com