Я читал this article о наследовании области видимости в AngularJS и смущен этот код, например:Почему это приводит к наследованию?
angular.module("Demo", [])
.controller("ChildCtrl", function($rootScope, $scope) {
$rootScope.rootyThing = "I am groot";
console.log($scope.rootyThing); // "I am groot"
console.log(Object.getPrototypeOf($scope)); // Scope
});
Я не понимаю, почему $scope.rootyThing
устанавливаются вместо undefined
.
Объяснение товара кажется неполным. Тот факт, что дочерний объект «прототипно наследует» от $rootScope
, не объяснит этого, посколькуне установлен на прототипе и, кроме того, был установлен после создания области с дочерним объектом $scope
.
Единственное объяснение заключается в том, что области в Угловом глубоко модифицированы так, что все переменные, установленные на них, передаются в существующие дочерние области. Если я не пропущу что-то, более чем возможно.
Может ли это объяснить это?
Edit: Мое нынешнее понимание, что $rootScope
фактически сама Scope
функция, а не экземпляр из Scope
, и все $scope
экземпляры использовать это в качестве корневого прототипа, поэтому, когда переменные установлены на функции Scope
, тогда они, естественно, доступны для различных экземпляров $scope
.
Является ли это точным?