地图集合javascript中未定义的对象
我有我的自定义类,我想将它存储到map集合中,但当我想从map(我的对象的一个实例)中获取一个值时,我得到了一个错误,即对象未定义。有没有可能投掷物体或其他东西?如果我按下简单字符串而不是自定义类的对象,一切都正常。有人能告诉我如何解决这个问题吗?当然,如果这个问题能够解决的话 js: 如果要看情况,我使用IE10。谢谢你的帮助和提示 编辑: 如果我使用地图集合javascript中未定义的对象,javascript,collections,map,undefined,Javascript,Collections,Map,Undefined,我有我的自定义类,我想将它存储到map集合中,但当我想从map(我的对象的一个实例)中获取一个值时,我得到了一个错误,即对象未定义。有没有可能投掷物体或其他东西?如果我按下简单字符串而不是自定义类的对象,一切都正常。有人能告诉我如何解决这个问题吗?当然,如果这个问题能够解决的话 js: 如果要看情况,我使用IE10。谢谢你的帮助和提示 编辑: 如果我使用 dictionary[key] = new CustomClass(1, "lel", 2); 而不是: diction
dictionary[key] = new CustomClass(1, "lel", 2);
而不是:
dictionary[key] = CustomClass(1, "lel", 2);
这是可行的,但有人可以告诉我原因,比如:
dictionary[key] = "lel";
function Bar(x, y, z) {
if (!(this instanceof Bar)) {
return new Bar(x, y, z);
}
...
}
在没有新操作员的情况下工作?据我所知,js中的所有内容都是对象,那么插入字符串和自定义类有什么区别呢?(我是js新手,很抱歉我的知识不好)正如您已经了解的,在js中,对象是用函数构造的,但是
new
关键字很关键
执行var foo=new Bar()
时,解释器不仅在该构造函数中创建一个新对象并将其设置为this
,然后该对象也是构造函数的隐式返回值
如果省略新建
,则在栏中
此上下文将是默认值(在ES5严格模式下未定义
,或全局对象-通常为窗口
否则),函数不存在的返回值(即未定义
)将分配给foo
可以将普通函数转换为“自动构造函数”,而不需要像下面这样的new
关键字:
dictionary[key] = "lel";
function Bar(x, y, z) {
if (!(this instanceof Bar)) {
return new Bar(x, y, z);
}
...
}
i、 e.函数可以确定它不是用
new
调用的,因此立即用new
调用自己。您的语法不正确,您没有使用new
调用CustomClass
,您能发布一个演示来重现这个问题吗?尝试var elem[key]=
看起来不一样right@elclanrs哇,谢谢你的快速回答,如果我添加一个新的,它会工作:)var elem[key]=newcustomclass(1,“lel”,2);代替var elem[key]=CustomClass(1,“lel”,2);但是你能告诉我为什么,像这样的:var elem[key]=“lel”;在没有新操作员的情况下工作?据我所知,js中的所有内容都是对象,那么插入字符串和自定义类有什么区别呢?(我是js新手,很抱歉我的知识不好)什么是elem
?你还没有宣布。另外,正如David所说,您不应该在elem[key]=
@Alnitak前面使用var
,对不起,我没有注意到我解决了这个问题。应该是字典[key]=…谢谢您的解释!