AngularJS继承模式没有使用范围?

时间:2016-09-27 09:09:17

标签: javascript angularjs inheritance

我是棱角分明的js的新手,我通过各种很棒的链接来学习它,我遇到的是inheritance,它展示了如何在角js中获得继承但我怀疑的是作者说" 由于AngularJS没有提供任何内置的继承功能,在这篇博文中我将描述如何将一般的JavaScript继承模式应用于AngularJS组件。"但我们确实有角度继承的范围,那么他的第一个陈述是什么意思?我错过了一些要理解的东西吗?请解释一下。

4 个答案:

答案 0 :(得分:1)

  

由于AngularJS不提供任何内置功能供使用   继承

这意味着作为框架的角度没有任何继承机制(代码重用),例如,骨干网的extend功能。但是,您可能仍需要从控制器或服务继承功能,因此本文将向您展示如何在角度框架内使用本机JS。

  

我们确实有角度

的继承范围

是的,范围确实使用prototypes,但它不使用共享功能(代码重用),而是启用子范围从父级访问数据而无需其他机制

答案 1 :(得分:0)

AngularJs $ Scope - 在AngularJS中,$ Scope是组织成层次结构的对象。有一个根范围,根范围有一个或多个子范围。每个视图都有自己的$ scope(它是根作用域的子级),因此无论一个视图控制器在其$ scope变量上设置哪些变量,这些变量对其他控制器都是不可见的。

继承 - 继承使您可以创建重用,扩展和修改其他类中定义的行为的新类。其成员被继承的类称为基类,而继承这些成员的类称为派生类。派生类只能有一个直接基类。继承是传递性的。如果ClassC派生自ClassB,而ClassB派生自ClassA,则ClassC继承ClassB和ClassA中声明的成员。

答案 2 :(得分:0)

Angular是框架,JavaScript是编程语言,继承是语言功能而非框架功能。所以从 - 如何在JavaScript中进行继承开始,它可以在角度(或任何其他框架)中使用,这只是在javascript中创建的库。

一些框架在Backbone中创建了像extend这样的方法,但是扩展是在纯js中进行基于原型的继承的方法。这不是魔术。在服务,范围等角度变量中也可以做同样的事情。

答案 3 :(得分:0)

Angular中常用的另一种涉及继承的设计范例在于创建服务。一个人可以创建一个服务,让我们称之为BaseService,就像这样..

this.publicVar = '..'

this.method1 = function() .. 

this.method2 = function() ..

var privateMethod = function() ..

var privateVar = '...';

return this;

and then in another service, inject the BaseService, and then begin by doing

this = Object.create(BaseService);

then you can extend the BaseService in this new service with other methods

this.newServiceMethod = function() ...