问题标签 [hasownproperty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 我的困境涉及 JavaScript 的原型继承和 hasOwnProperty 方法
基本上每个在 JavaScript 中写成员枚举的人都强烈主张使用该hasOwnProperty
方法以避免上升原型链。
我知道这是一种防御性编程形式,以防止迭代添加到的成员,例如添加到Object.prototype
. 但是其他继承的成员呢?比如说,原型链中非常接近的成员......您实际上想要枚举的成员。
假设我有以下内容:
在上面的示例中, onlyage
将被显示,因为age
是mary
...其他两个成员的唯一直接成员,name
和surname
是原型链的上游。
for..in
但显然,我希望在构造中迭代所有 3 个成员;但是,如果您删除,则如果有人向其添加功能,则hasOwnProperty
可以从中获取成员。Object.Prototype
所以这是我的困境。
您是否将原型继承与hasOwnProperty
方法结合使用,但冒着在枚举过程中让成员离链太远的风险?
或者您是否使用其他形式的继承,将成员直接添加到对象而不是原型?
javascript - 如何将函数绑定到 JSON 对象?
1)我可以访问,per.f_IncreaseSalary(0.2)
但如果我从 JSON 字符串创建这个对象,我如何访问 f_IncreaseSalary 函数?
2)如何创建具有 Person 类功能的 sPer 对象?
3)我怎么能理解sPer
有f_IncreaseSalary
功能?
javascript - hasOwnProperty 和 ECMAScript 5 严格模式
我很好奇:任何人都知道为什么 ECMAScript5 规范没有在严格模式下更加收紧预定义对象原型的属性吗?例如,似乎没有关于 hasOwnProperty 定义方式的信息。我已经尝试重新定义它(并在 FF4 beta 中测试了代码)并且我能够侥幸逃脱。如果我没有做错任何事情,那么这意味着任何人仍然可以重新定义 Object.prototype.hasOwnProperty 属性,并真正搞砸所有依赖它来工作属性的代码......
对此有何想法?
编辑:在我深入研究规范时提供更多信息......
正如我在下面的评论中所说,由于应用于它的元数据(可写、可枚举和可配置都设置为 false)和 FF 4 beta(我'm 用来运行我的测试)确实会产生异常。
谢谢。
javascript - Chrome 和 Firefox 怎么会有区别呢?
我正在使用基于 for(.. in ..) 和 hasOwnProperty 的递归函数来克隆对象,这在 IE 和 FF 中运行良好......但在 Chrome 中运行良好。
当使用 for(... in ...) 迭代对象的成员时,如果对象是 DOM 对象,Firefox 和 Chrome 会为 hasOwnProperty 提供不同的结果。
在 Chrome 控制台与 Firebug(FF) 中的控制台中键入以下内容会产生不同的结果:
火狐输出:
构造函数
addEventListener
铬输出:
clientLeft
scrollHeight
firstElementChild
offsetParent
ch
offsetWidth
isContentEditable
hidden
previousElementSibling
parentElement
localName
children
ownerDocument
nodeValue
lastElementChild
rowIndex
offsetLeft
tagName
className
prefix
innerHTML
previousSibling
namespaceURI
id
childElementCount
innerText
scrollLeft
clientHeight
align
textContent
nextSibling
scrollWidth
offsetHeight
chOff
clientWidth
nodeName
style
lang
scrollTop
offsetTop
childNodes
baseURI
nextElementSibling
vAlign
sectionRowIndex
classList
title
firstChild
属性
数据集
outerText
单元
parentNode
clientTop
tabIndex
contentEditable
outerHTML
dir
lastChild
bgColor
nodeType
spellcheck
draggable
对于 hasOwnProeperty 标记为 true 的所有额外属性都导致我的代码中出现“无限/足够崩溃”的问题。有没有办法确定一个属性是否是一个内置的 DOM 对象属性?或者其他一些解决方案..
javascript - 为什么 toString 和 hasOwnProperty (etc) 不出现在 JavaScript 的 for-in 循环中?
我正在与另一位开发人员讨论 hasOwnProperty 以及您应该如何在 javascript 的 for-in 循环中使用它,他提出了一个很好的问题。做for-in循环时,为什么toString、hasOwnProperty等内置方法没有出现在循环中?
javascript - Javascript中的“对象不支持此属性或方法IE”错误可能来自使用hasOwnProperty?
由于某种原因,我在 IE8 和 IE7 中遇到了这个错误。我正在遍历对象中的所有键,它一直在告诉我Object doesn't support this property or method
:
整个区块如下:
有人在 Doug Crockford 的 jslint 板上发布了这个,他回复说:
for (key in object) { if (Object.prototype.hasOwnProperty.call(object, key)) { ... } }
hasOwnProperty 应该是一个操作符,而不是一个方法,因为作为一个方法,它很容易出现这些问题。但它就是这样,所以你必须解决这个问题。
像往常一样在 Chrome、FF、Safari、Opera 等中正常工作。关于解决方法的任何想法?
javascript - 对象没有 hasOwnProperty 方法(即未定义) - IE8
这似乎很奇怪。
这是我在 IE8 控制台中的实验:
关于什么可能导致这种情况的任何想法?
javascript - JavaScript:是否定义了成员?
在我看来,有四种不同的方法可以确定给定对象(例如foo
)是否具有定义的给定属性(例如bar
):
if (foo.hasOwnProperty(bar)) {
if ('bar' in foo) {
if (typeof foo.bar !== 'undefined') {
if (foo.bar === undefined) {
要确定对象中是否存在名为“ bar
”的属性foo
,这三个语句是否都等效?是否有任何我不知道的微妙语义使这三个语句中的任何一个都不同?
javascript - JavaScript 中 hasOwnProperty 中的属性是什么?
考虑:
什么是正确的使用/解释hasOwnProperty('someProperty')
?
为什么我们不能简单地使用someVar.someProperty
来检查一个对象是否someVar
包含带有 name 的属性someProperty
?
在这种情况下,什么是财产?
这个 JavaScript 检查什么属性?
actionscript-3 - Flex 4.6 hasOwnProperty 不工作
我将我的项目从 Flex 4.0 升级到 Flex 4.6,一切似乎都没有出现重大错误。
但突然间:我明白了
TypeError:错误 #1009:无法访问空对象引用的属性或方法。
hasOwnProperty
在 Flex 4.0 中完美运行的代码上使用时
有问题的代码是:
谁能告诉我如何解决这个问题。
谢谢,麻烦您了。
C