为什么我能够在我的范围内看到一个用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"
...
我知道有another question asking for pretty much the same但是OP正在使用带有@
的隔离范围作为属性,而我使用的=
不适用于observe
据我所知。
然后还有一些我有点困惑的事情。为什么这甚至可能,不是作为参数给出的console.log()
“快照”?那么我怎么可能看到第1行和第2行中的属性未定义?
答案 0 :(得分:4)
这是JavaScript中的一个普遍问题。我发现this answer非常有帮助。
运行console.log(this)时,输出对象本身和 控制台将引用(如果你喜欢的指针)链接到内部 变量
同样适用于$ scope。