我在不同的地方读过,你总是在你的范围内使用对象很重要,但我还没有找到关于它为什么的明确答案.有人可以帮帮我吗?
我喜欢Ryan Q的答案,但在做了一些更多的研究后,我想补充一点,更加强调javascript的原型继承.
这里的问题是对象与原始问题(通过引用传递和按值传递)以及Javascript的原型继承如何工作.
当javascript类继承自父类时,它会将值复制到子类中.可以复制两种类型的值,对象或基元.
通过继承复制对象时,它通过引用传递.这意味着我在子对象中进行的任何更新也将在父对象中看到.
通过继承复制原语时,它将按值传递.这意味着不会在父类中看到任何更新.
这与Angular范围有什么关系?当我们创建一个指令时,将为该指令创建一个作用域,我们可以将它声明为一个孤立的作用域或一个继承的作用域.如果它是继承的范围,它将继承其父级的范围项.现在,如果我在父作用域中有原始值,我会将它们作为pass by value继承到我的子作用域中.这意味着当我在父作用域中进行更改时,在我的子作用域中不会看到它,反之亦然.现在我可以在我的子和父范围中使用不同的值具有相同的继承变量.这会导致混乱...... 可能是愤怒......哈哈.
因此,如果您只使用一个对象,那么这个问题就不会发生.这就是为什么你应该总是在范围内对象.
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |