任何人都可以解释AngularJS中继承和扩展之间的区别吗?
非常感谢!Lior
编辑:看这里:github.com/angular/angular.js/blob/master/src/Angular.js并搜索'inherit'来找到它(当前第246行)
答案 0 :(得分:0)
Angular中没有继承功能。
将属性从一个对象扩展到另一个对象。这是JavaScript juju的常见内容。 JQuery也有扩展功能。
var x = { foo: 'hello' };
var y = { bar: 'world' };
angular.extend(x, y);
console.log(x); //{ foo: 'hello', bar: 'world' }
我可以假设你在Angular中讨论的唯一继承是子范围如何继承父范围的属性。你是完全正确的,这里有一点不同,因为它不是通过扩展来完成的......它是通过原型继承来完成的。父范围实际上是子范围的原型。这意味着当您尝试访问不存在的子作用域上的属性时,它将落到它的原型并检查该属性,如果它不存在,它将落到原型并检查那里的财产。
这意味着当您更新父项的属性时,它会为其所有子项更新...但是,如果您为子项更新,它将不会更新父项...因为它直接设置属性孩子,而不是它的原型(父母)。
如果不清楚,有很多博客条目/ StackOverflow关于此问题: