javascript - 如何正确使用Js和关联数组插入字符串?

标签 javascript undefined associative-array

所以我目前正在我的 Js 脚本中执行此操作:

var someObject = require('./stored'); 
this.makeDuplicates = function(){
    var storeDuplicates = [];

    this.addDuplicates = function(astring){
        storeDuplicates[astring] = new someObject(); 
    }

    this.printDuplicate = function(){
        console.log(storeDuplicates["hello"]);
    }
}
var input = "hello"
var newDupe = new makeDuplicates()
newDupe.addDuplicates(input)
newDupe.printDuplicate()

这将打印未定义。为什么这没有正确完成?我假设它会创建一个类似散列的表,其中“字符串”->引用对象,但看起来并非如此。我该怎么办?谢谢!

最佳答案

首先,如果您的目的不是使用类似列表的东西,请不要使用数组,而使用对象。与其他语言不同,JavaScript 对象是可扩展的。也就是说,您始终可以向对象实例添加新方法和属性。因此 javascript 没有哈希,因为对象以类似哈希的方式运行。为了使对象的使用变得简单,JavaScript 具有对象字面量语法:

var storeDuplicates = {}; // object to act as a hash

其次,从构造函数中删除 this:

makeDuplicates = function(){ /*... */ };

其他一切都应该按照您的预期进行。

请参阅此相关问题,了解 this 在 javascript 中的工作原理:How does the "this" keyword in Javascript act within an object literal?

<小时/>

现在,以下内容只是建议性的,您的代码在没有它们的情况下仍然可以工作,但其他 JavaScript 程序员可能会发现它不合常规。

由于构造函数(在经典 javascript 中,构造函数就像其他语言中的类)只是函数,因此构造函数和其他函数之间没有语法差异。为了解决这个问题,JavaScript 发展了一种约定,其中构造函数名称始终以大写字母开头:

MakeDuplicates = function(){ /* ... */ };

当 JavaScript 程序员看到上面的内容时,他就会明白 MakeDuplicates 函数是一个构造函数。

关于javascript - 如何正确使用Js和关联数组插入字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38780207/

相关文章:

javascript - 遍历 javascript 对象以获取键值对

JavaScript:获取未定义的值

php - 如何从 PHP 中的 Wordpress get_results 添加数据到 OBJECT

javascript - 在编辑对话框表单中禁用 JQGrid 下拉列表

javascript - JS 中函数内变量的覆盖

javascript - 正则表达式问题 - 在字符串中查找数字

javascript - lodash debounce 在匿名函数中不起作用

javascript - 从数组中过滤 NaN

php - 使用 WordPress 发布元数据函​​数的 HTML 表单中的关联数组

shell - 使用 shell 脚本比较两个列表