gpt4 book ai didi

javascript - 在对象中使用方括号 : Unexpected Token

转载 作者:行者123 更新时间:2023-11-29 21:48:27 25 4
gpt4 key购买 nike

我省略了很多上下文,但我认为没有必要。我有一堆代码指向具有 prop 属性的对象。然后我设置了一个 $scope.$watch 来监视对象,然后,本质上,广播 prop——属性的名称,和 newValue[prop],该属性的值。它看起来有点像这样:

$scope.$watch(function(){return object;}, function(newValue, oldValue) {
for (var prop in object) {
if (newValue[prop] !== oldValue[prop]) {
$scope.$broadcast('from-parent', {a: prop, b: newValue[prop]});
}
}
};

广播消息 console.log() 输出 Object {a:(属性的名称),b:(属性的值)}会期待。

奇怪的是,当我删除 a:b: 键时,即

$scope.$broadcast('from-parent', {prop, newValue[prop]});

我收到一个 Uncaught SyntaxError: Unexpected token [ 错误。

是否不允许在对象中通过括号引用属性?这是怎么回事?

最佳答案

{prop, newValue[prop]} 不会使用 prop 变量的名称创建属性,它最终只是一个无效的对象初始值设定项——不是因为 []({prop, "foo"} 也会失败),但因为对象初始化器不是那样工作的。

...the name of the property, and newValue[prop]

要从变量中给对象一个属性名,在 ES5 中你必须先创建对象,然后添加属性:

var obj = {};
obj[prop] = newValue[prop];
$scope.$broadcast('from-parent', obj);

在 ES6 中,您将能够改用新的动态属性名称表示法:

// REQUIRES ES6!
$scope.$broadcast('from-parent', {[prop]: newValue[prop]});

关于javascript - 在对象中使用方括号 : Unexpected Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com