我希望在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
}
我的意思是它有可能吗?请指南
答案 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