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

in AngularJS, what's the difference between inherit and extend?

本文关键字:区别 是什么 扩展 AngularJS 继承      更新时间:2023-09-26

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

多谢!

Lior

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

Angular中没有继承函数。

Extend只是将属性从一个对象复制到另一个对象。这是一个常见的JavaScript代码。JQuery也有一个扩展函数

var x = { foo: 'hello' };
var y = { bar: 'world' };    
angular.extend(x, y);    
console.log(x); //{ foo: 'hello', bar: 'world' }

我认为你在Angular中谈论的唯一继承就是子作用域如何继承父作用域的属性。你说得很对,这里确实存在差异,因为它不是通过扩展之类的方式完成的……这是通过原型继承实现的。其中父作用域实际上是子作用域的原型。这意味着当你试图访问一个不存在的子作用域的属性时,它会下降到它的原型并检查那个属性,如果它不存在,它会下降到那个原型并检查那里的属性。

这意味着当你更新父属性时,它会更新它所有的子属性…然而,如果你为一个孩子更新,它不会更新父母…因为它直接在子元素上设置属性,而不是在它的原型(即父元素)上。

如果这还不清楚,已经有大量的博客条目/StackOverflow问题了:

  • 一个是我的朋友Mark rajcock先生,他是一个提问和回答自己问题的大师。
  • 和我自己的博客条目,这更多的是关于动态原型对象来产生这种效果。
  • 我真的很想把自己和Doug Crockford放在一个名单里