Создаем объекты без наследования (от Object не считается)
var Point = Object.inherit({
x: 0, // что то вроде значения по умолчанию
y: 0, // что то вроде значения по умолчанию
constructor: function(ax,ay) {
this.x = ax;
this.y = ay;
},
toString: function(){
return "(x=" + this.x + " y=" + this.y + ")";
}
});
Работает!
Вообще если уж сравнивать с C++ то присвоение свойств объекта в момент объявления это не есть правильно. Однако это полезная фича (на мой взгляд), тем более что у нас ситуация когда присваивание и есть объявление. Так мы имеем возможность присваивать значение свойств по умолчанию.
Усложняем
var Point = Object.inherit({
a: new Array(2),
constructor: function(ax,ay) {
this.a[0] = ax;
this.a[1] = ay;
}
});
Не работает. Вернее работает, но свойство
а ведет себя как статическое свойство. Иными словами оно общее для всех экземпляров "класса"
Point.
Посему заповедь. Хочешь свойство сложного типа, создавай его в конструкторе.
var Point = Object.inherit({
a: null, //вообще без этой строчки можно обойтись, но выглядит красивым объявлением
constructor: function(ax,ay) {
this.a = new Array(2);
this.a[0] = ax;
this.a[1] = ay;
}
});
Кстати, а можно ли с помощью этой библиотеки создавать статические свойства простых типов?