Javascript 获取对象声明中的未定义错误

Javascript 获取对象声明中的未定义错误,javascript,angularjs,Javascript,Angularjs,以下是我的目标: $scope.obj = { name: null, child: { name : name} }; <input type="text" ng-model="obj.name" /> 然后它将始终使用旧值,我不想在这么多地方这样做。所以我希望这个过程自动化,就像更新name$scope.obj.name一样;它应该自动更新$scope.obj.child.name 但是使用上面的

以下是我的目标:

$scope.obj = {
        name: null,
        child: { name : name}
    };

<input type="text" ng-model="obj.name" />
然后它将始终使用旧值,我不想在这么多地方这样做。所以我希望这个过程自动化,就像更新name$scope.obj.name一样;它应该自动更新$scope.obj.child.name

但是使用上面的代码,我得到了一个错误:名称未定义


为什么上述声明不可行,以及如何实现这一点?

您将obj声明为错误:

$scope obj = {
  name: null,
  child: { name : name}
};
应该是

$scope.obj = {
  name: null,
  child: { name : name}
};
您得到的
名称
未定义的
,因为JavaScript试图在全局范围内查找
名称
对象,但在以下代码中找不到该对象:

child: { name : name//undefined}
您可以这样定义它:

$scope.obj = {
   name: "Ay"
};
$scope.obj.child = {
  name: $scope.obj.name 
}

我们将在这里的
子属性声明中引用
$scope.obj.name
,因此它是正确绑定的。

这不起作用,因为给定上下文中没有
name
变量。您可以创建一个函数并从中返回
name
的值<代码>子:函数(){返回this.name;}
@Tushar您能否以回答的形式提供更多细节,如解释和如何使用它。please@Tushar但是如果我按照你的建议:$scope.obj.child.name??很抱歉,这是一个打字错误。我已经更新了我的问题,但问题仍然是sameOk对你的努力投了赞成票为了帮助我,但我可以有这样的东西:child:function(){return this.name;}如果你能看到@Tushar在上面的评论中提到的内容,你也可以这样写$scope.obj={name:null,child:{name:$scope.obj.name}@学习Yes您可以这样定义它
$scope.obj={name:“Ay”,child:function(){returnthis.name;}
但您不会有
子.name
属性,它将只是一个函数,返回
$scope.obj
@HamikHambardzumyan的
名称
。不,您不能,它将引发一个错误:
无法读取未定义的属性“name”
。是的,如果您遵循
子:函数(){return this.name;}
建议,您将无法获取
$scope.obj.child.name
,因为
child
只是一个函数。
$scope.obj = {
   name: "Ay"
};
$scope.obj.child = {
  name: $scope.obj.name 
}