在AngularJS中,继承和扩展有什么区别?

时间:2013-03-22 19:58:44

标签: javascript angularjs

任何人都可以解释AngularJS中继承和扩展之间的区别吗?

非常感谢!

Lior

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

1 个答案:

答案 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关于此问题: