在作用域对象中定义但不可访问的属性

Property defined in scope object but not accessible

本文关键字:访问 属性 作用域 对象 定义      更新时间:2023-09-26

为什么我可以在用console.log()打印的范围内看到一个属性,但之后当我尝试访问它时,它是未定义的?

以下代码位于指令的控制器功能内:

console.log($scope); //a scope object with a defined "output" property
console.log($scope.output); //undefined

这是我的作用域从第一个console.log()的输出。

Scope {$id: "008", $$childTail: null, $$childHead: null, $$prevSibling: Scope, $$nextSibling: Scope…}
...
output: "3"
...

我知道还有另一个问题也提出了同样的问题,但OP使用了一个带有@的隔离作用域作为属性,而我使用的是=,它不能像我所知道的那样与observe一起工作。

还有一件事我有点困惑。为什么console.log()不是参数的"快照"?那么,我怎么可能在第1行看到一个属性,而在第2行它是未定义的呢?

这是JavaScript中的一个常见问题。我发现这个答案很有帮助。

当您运行console.log(this)时,您将输出对象本身和控制台将引用(指针,如果你喜欢的话)链接到内部变量。

同样适用于$scope。