Angular $ digest不在$ rootScope中

时间:2014-06-16 14:34:12

标签: angularjs angularjs-scope

当我控制$rootScope时它没有在对象中显示$digest函数时,角度是多少?

console.log($rootScope);

但如果我控制$rootScope.$digest,它将显示该功能。

console.log($rootScope.$digest);

同样适用于$apply

1 个答案:

答案 0 :(得分:1)

因为这些函数确实没有在对象本身上定义,但是它继承自原型(JavaScript具有原型继承,请阅读更多here。这适用于AngularJS中的所有$ scope对象。

例如,我的浏览器内置控制台对象:

enter image description here

你可以看到它只有两个真正的属性,一个memory对象,以及对它的原型的引用,可以用作已弃用的__proto__(原型,继承自另一个!)。因此,原型ConsoleBase上定义的任何内容也可通过对象console访问

AngularJS进一步使用它,使范围继承彼此;当你有一个控制器在另一个控制器内部时,外部控制器可以定义属性,内部控制器可以读取它们 - 但不是反过来,因为内部范围上定义的任何内容都没有出现在外部范围,因为它是它自己的对象。这可能不是最佳解释,因此适用于full story see here