javascript - 为什么 hasOwnProperty ('toString' ) 不适用于对象?

标签 javascript object hasownproperty

我最近看了一本指南,想更好地了解 hasOwnProperty 的概念。

根据 Mozilla 的说法:

“hasOwnProperty() 方法返回一个 bool 值,指示对象是否将指定属性作为自己的(非继承)属性。”

我创建了一个对象

var test = {yes:function(){}}

然后就这么做了

test.hasOwnProperty('toString')

它返回 false。这是因为 toString 是我没有在测试中创建的方法,对吗?

但是如果我将 hasOwnProperty 记录到数组并传递长度,那么

var arr1 = new Array
arr.hasOwnProperty('length') //appears to return true

它返回 true,但我从未声明长度。

我认为 hasOwnProperty 只适用于非继承的属性 -

那么为什么当数组对象继承 length 属性时,在数组上使用 hasownprop('length') 会返回 true,

但是

var test = {yes:function(){}}
test.hasOwnProperty('toString') //false

为什么^返回 false? toString 是对象原型(prototype)上的方法,当我将其登录到 Google Chrome 控制台时我会看到它

最佳答案

Its because toString is a method that I did NOT create right inside test right?

是的,从对象字面量创建的对象只具有在字面量中声明的自己的属性。

但是,您没有显式声明属性并不意味着它是继承的,或者它不存在。数组确实有一个自己的 .length 属性,该属性基本上是由数组构造函数在 new Array 调用中创建的。

想象一下以下情况:

function Test() {
    this.prop = "some value";
}
var x = new Test;
console.log(x.hasOwnProperty("prop")) // what do you expect?

关于javascript - 为什么 hasOwnProperty ('toString' ) 不适用于对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849243/

相关文章:

javascript - Selenium ,java,js "Exception in thread "主“org.openqa.selenium.JavascriptException : missing ) after argument list"

javascript - Jquery 按钮 'click()' 功能无法添加新的 html 文本

Java:从类创建对象

javascript - 如何检查对象中的 hasOwnProperty 链

javascript - 如何从 iframe 中调用 Angular Controller 函数

javascript - chrome本地存储异步传递数据以正确回调

java - JSP - 下拉列表中的日期对象

Powershell 对象 : referencing Self

JavaScript 数组。先进的

javascript - hasOwnProperty 和 ECMAScript 5 严格模式