Сообщение от sig_al
|
Описываю объект:
|
Сообщение от sig_al
|
var newObj = function(){ ... }
|
Хоть это и объект (функции - тоже объекты), но здесь Вы описывается
конструктор объектов. И этот конструктор уже будет порождать Ваши объекты. При этом,
this внутри этого конструктора будет ссылаться на создаваемый объект.
А зачем Вы описываете методы отдельно и потом присваиваете ссылки на них this-методам? В данном случае, можно сразу описать this-методы, без промежуточных описаний отдельных независимых (глобальных) функций.
var newObjConstructor = function () {
this.property = 'prop1';
this.method1 = function () {
var result = this.method2();
};
this.method2 = function () {
this.property = 'PROP1';
};
};
А это уже объект, порождённый Вашим конструктором:
var newObj = newObjConstructor();
newObj.method1();
newObj.method2();
Но лучше описывать методы в прототипе, так будет использована одна копия метода на все объекты, порождаемые от конструктора (в случае же, когда Вы описываете методы в самом конструкторе, каждый объект будет иметь свой собственный метод, что повлечёт увеличение расхода памяти):
var newObjConstructor = function () {
this.property = 'prop1';
}
newObjConstructor.prototype.method1 = function () {
var result = this.method2();
};
newObjConstructor.prototype.method2 = function () {
this.property = 'PROP1';
};
var newObj1 = new newObjConstructor();
var newObj2 = new newObjConstructor();
alert(newObj1.method1 === newObj2.method1); // true