gpt4 book ai didi

用作混合数据结构的 JavaScript 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:41 24 4
gpt4 key购买 nike

我相当了解 JavaScript 和初始化数据结构时使用的原型(prototype)继承,但我仍然不完全确定 JS 的独特功能之一是如何工作的。

假设我创建了一个数组:

var myArr = [];

我现在可以将项目推送到数组:

myArr.push('foo');
myArr.push('bar');

此时myArr.length == 2

现在我可以做类似的事情

myArr['myProp'] = 5; // OR myArr.myProp = 5;

但是我的 myArr.length 仍然等于 2,我可以使用某种类型的迭代方法来迭代最初推送的 2 个值。

所以基本上这个对象是一个“混合”数据结构,可以像数组或对象一样对待。

所以我的问题是原生对象语法(myObj.someProperty = 'blah'myObj['someProperty'] = 'blah')是否专门适用于Object.prototype 以及从该原型(prototype)继承的任何对象?这是有道理的,因为对象的原型(prototype)链看起来像:

var myObj = {} -> Object.prototype -> null

数组的原型(prototype)链如下所示:

var myArr = [] -> Array.prototype -> Object.prototype -> null

这让我假设您可以用对象 (myObj.someProperty//as getter or setter) 做的任何事情都可以用数组来完成,这将解释我上面提到的现象。

最佳答案

正式确定我的答案。这是完全正确的。除了字面量和临时值,几乎所有 JavaScript 中的东西都是对象。包括函数、数组和变量。

正是出于这个确切的原因,使用以下语法遍历数组被认为是危险的:

for (x in myArray){}

上面这行代码可能会导致不可预知的结果!

这种将所有数据类型创建为对象的方法允许 JavaScript 尽可能地动态和灵活。

您可以看到对象 here 的完整描述.

关于用作混合数据结构的 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952495/

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