gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:51:13 29 4
gpt4 key购买 nike

我最近看了一本指南,想更好地了解 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/

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