所以我目前正在我的 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/