gpt4 book ai didi

javascript - 在 JS 数组中使用命名键

转载 作者:数据小太阳 更新时间:2023-10-29 04:34:42 25 4
gpt4 key购买 nike

我正在处理 The Principles of Object-Oriented Javascript并且对 Zakas 在数组内(而不是在对象内)使用命名键感到困惑。见评论:

function EventTarget() {}

EventTarget.prototype = {

constructor: EventTarget,

addListener: function(type, listener) {

if (!this.hasOwnProperty("_listeners")) {
// Why isn't this: `this._listeners = {};`
this._listeners = [];
}

if (typeof this._listeners[type] === "undefined") {
this._listeners[type] = [];
}

this._listeners[type].push(listener);
},

// more stuff
}

var target = new EventTarget();
target.addListener("message", function(event) {
console.log("Message is " + event.data);
});

他的代码工作正常(就像用数组代替对象字面量一样),但我的理解是,如果您想按名称访问内容,则应该使用对象。来自array article on w3schools :

Many programming languages support arrays with named indexes.
Arrays with named indexes are called associative arrays (or hashes).
JavaScript does not support arrays with named indexes.
In JavaScript, arrays always use numbered indexes.

Zakas 使用这样的数组有充分的理由吗?你能解释一下吗?或者,这是我应该提交给 the errata 的东西吗? ?

最佳答案

我能看到的唯一原因是:让人困惑。 JavaScript 不强制执行任何事情,真的,因为一切都是对象,你几乎可以做任何你想做的事情。这家伙正在使用数组来存储命名属性,但他很可能使用了函数或其他任何东西!

编辑:几乎一切都是对象(我会想到有人可以尝试在 undefined 上设置属性,因为最常见的错误之一JavaScript 是 TypeError : undefined is not an object叹息 JavaScript,你为什么要这样对我们?

关于javascript - 在 JS 数组中使用命名键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551353/

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