【发布时间】:2023-08-02 07:00:01
【问题描述】:
我已经广泛阅读了有关 Javascript 原型继承的内容,特别是在子作用域中。我的理解是,我们始终确保一个“。”在我们的 ng-model 绑定中,因此它引用了一个对象。
我的问题是......为什么原型继承在其本地范围内创建一个原语而不是一个对象?看起来完全一样。
在一种情况下,我们有一个原语。在另一种情况下,我们有一个对象 - 比如说一个数组。更令人困惑的是,我可以将一个对象传递给子范围(没有“.”),并且通过将数据推送到在本地范围内传递的对象上,父对象仍然被修改,因此没有子数组对象被建造。再说一遍,为什么?原型继承似乎会自动创建原语……是什么让对象与众不同?
【问题讨论】:
-
原型继承不会创建任何东西。 Angular 将属性添加到当前范围。属性是基元还是对象也没关系。
-
这很重要。对象位于父范围内并进行适当修改,而基元则不是。我试图理解为什么会这样。
-
如果没有一些可能导致您混淆的示例,这个问题就太宽泛了。我不同意@zeroflagL,尽管关于
doesn't matter,因为一旦作用域变成子作用域,什么保持绑定,什么不绑定,这确实很重要 -
var $scope.name = "丹尼尔";
-
Charles 和@charlietfl,也许我不够明确或误解了这个问题。问题是:为什么原型继承在其本地范围内创建原语而不是对象。因此,如果您有
ng-model="something.text",那么text将被添加到scope.something。但如果对象something尚不存在于作用域链中的某个位置,则它将被创建并添加到当前作用域中。如果你的意思不同,Charles,请改写问题。
标签: javascript angularjs scope