Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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';s索引运算符?_Javascript_Operator Overloading - Fatal编程技术网

我是否可以重载JavaScript';s索引运算符?

我是否可以重载JavaScript';s索引运算符?,javascript,operator-overloading,Javascript,Operator Overloading,我试图重载JavaScript的索引操作符。我试着这样做: var obj = {}; obj.[] = function(i) { } …但上述代码失败;我认为编译器不支持重载索引运算符。我真的需要这样一种方法;有什么方法可以实现它吗?在javascript中,运算符重载是不可能的 检查这里给出的答案不是Javascript不支持重载索引操作符(我没有研究过,所以我不知道,但我打赌有一种方法)。这是因为[不是属性名称的有效第一个字符,因此整个名称将无效 如果您感兴趣,Firefox 24中的

我试图重载JavaScript的索引操作符。我试着这样做:

var obj = {};
obj.[] = function(i) {
}

…但上述代码失败;我认为编译器不支持重载索引运算符。我真的需要这样一种方法;有什么方法可以实现它吗?

在javascript中,运算符重载是不可能的


检查这里给出的答案

不是Javascript不支持重载索引操作符(我没有研究过,所以我不知道,但我打赌有一种方法)。这是因为
[
不是属性名称的有效第一个字符,因此整个名称将无效

如果您感兴趣,Firefox 24中的JIT编译器会抛出:

SyntaxError: missing name after . operator

obj.[] = function(i) {
    ^
您不能使用
语法引用无效的属性名称。无论您想如何使用上述语法,您都会回到这个问题。
[]
不是有效的属性名称,因此它在对象上总是会失败

正如其他人提到的,您可以使用括号语法引用任何无效名称,如
obj[“[]”]

这是我的剪贴画

标识符必须以$、\或Unicode中的任何字符开头 类别“大写字母(Lu)”、“小写字母(Ll)”, “标题字母(Lt)”、“修饰字母(Lm)”、“其他字母(Lo)”, 或“字母编号(Nl)”

字符串的其余部分可以包含相同的字符,再加上任何字符 U+200C零宽度非联接字符,U+200D零宽度联接字符 字符,以及Unicode类别中的字符“非间距标记” (Mn)”、“间距组合标记(Mc)”、“十进制数字(Nd)”或 “连接器标点符号(Pc)”

就这样,真的


你为什么需要这个?你想实现什么?如果我必须冒险,我想我认为OP希望能够做
obj[10]
,并让它用
I=10
调用他的函数。