-2

谁能解释AngularJS中的继承和扩展有什么区别?

非常感谢!

里奥

编辑:看这里:github.com/angular/angular.js/blob/master/src/Angular.js 并搜索'inherit'来找到它(目前第246行)

4

1 回答 1

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 问题:

于 2013-03-22T23:34:10.510 回答