强大的类结构AngularJS

时间:2014-06-09 06:41:34

标签: angularjs gwt

我希望在AngularJs中具有以下功能,就像我在C ++或Java中一样(当我使用GWT时)。

我有A类,其中包含对B类对象的引用列表,反之亦然,所以我可以这样说。甲'&s_object- GT; B'&s_reference- GT; show_B' s_property

class A{
list<B*> B_ref;//points to B's class objects
......and more
}

class B{
list<A*> A_ref;//points to A's class objects
......and more
}

我的意思是它有可能吗?请指南

2 个答案:

答案 0 :(得分:2)

AngularJs是一个使用html,css和Javascript轻松创建单页应用程序的框架。您的问题与Javascript而不是AngularJs框架有关。

由于语言的性质,您在Javascript中很难看到您要查找的行为。 Javascript不是一种支持类的语言,与C ++和Java相同。 Javascript是一种基于功能的动态语言,而不是面向对象。

Javascript可以支持类,但不能像在C ++和Java语言中那样使用。 Javascript改为使用原型。基本上,每个对象都有一个关联的原型(有点类似于C ++和Java类中的静态行为),这个原型可以用方法和属性进行修饰。从现有对象克隆新对象,新对象的原型继承自原始原型。

这允许在Javascript中模仿许多面向对象的功能。我建议您阅读Javascript和C ++等语言之间的区别。

http://en.wikipedia.org/wiki/Prototype-based_programming

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

答案 1 :(得分:1)

function A(color) {
  this.bRef = [];
  this.color = color;
  // and more
}

function B(name) {
  this.aRef = [];
  this.name = name;
  // and more
}

var a = new A();
var b1 = new B('foo');
var b2 = new B('bar');

a.bRef.push(b1);
a.bRef.push(b2);

var a1 = new A('red');
var a2 = new A('black');

b1.aRef.push(a1);
b1.aRef.push(a2);

console.log(a.bRef[1].name); // bar
console.log(a.bRef[0].aRef[0].color); // red
console.log(a.bRef[0].aRef[1].color); //black

b2.name = 'boo';

console.log(a.bRef[1].name); // boo