Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
地图集合javascript中未定义的对象_Javascript_Collections_Map_Undefined - Fatal编程技术网

地图集合javascript中未定义的对象

地图集合javascript中未定义的对象,javascript,collections,map,undefined,Javascript,Collections,Map,Undefined,我有我的自定义类,我想将它存储到map集合中,但当我想从map(我的对象的一个实例)中获取一个值时,我得到了一个错误,即对象未定义。有没有可能投掷物体或其他东西?如果我按下简单字符串而不是自定义类的对象,一切都正常。有人能告诉我如何解决这个问题吗?当然,如果这个问题能够解决的话 js: 如果要看情况,我使用IE10。谢谢你的帮助和提示 编辑: 如果我使用 dictionary[key] = new CustomClass(1, "lel", 2); 而不是: diction

我有我的自定义类,我想将它存储到map集合中,但当我想从map(我的对象的一个实例)中获取一个值时,我得到了一个错误,即对象未定义。有没有可能投掷物体或其他东西?如果我按下简单字符串而不是自定义类的对象,一切都正常。有人能告诉我如何解决这个问题吗?当然,如果这个问题能够解决的话

js:

如果要看情况,我使用IE10。谢谢你的帮助和提示

编辑: 如果我使用

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]=…谢谢您的解释!