Объектный код
Как научится правильно писать гибкий объектно ориентированный код?
Обычно я делаю как-то так
function construct(l) {
var obj = {
a : 5,
b : function() {
},
c : l
}
return obj;
}
Или даже так
function construct(l) {
var obj = {}
obj.a = 5;
obj.b = function() {
}
obj.l = l;
return obj;
}
Но хочется чего то более сложного. Как создают объекты профессионалы? |
Цитата:
|
я не знаю как профессианалы пишут но продолжаю так
function const2(){
var obj=new construct(55);
obj.c=6;
obj.d=function(){this.f=this.a+this.c}
return obj;
};
var f=new const2();alert('f='+f);f.d();alert(f.f);
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Вы написали фи-ю, а потом вспомнили,что всё это делается одной строкой, но первый вариант удалить забыли. Да? |
Цитата:
|
Цитата:
|
Цитата:
|
как много букв тратится на Toggle.prototype
|
Maxmaxmахimus,
А не лучше ли прототип объектом присвоить.
/**
* Переключатель.
* Имеет 2 состояния.
* Если включен, то возвращает хранимое значение,
* если выключен, то возвращает undefined.
* По умолчанию включен
*
* @param value - значение
* @constructor
*/
function Toggle ( value ) {
this._state = true;
this._value = value;
}
Toggle.prototype = {
on : function() {
this._state = true;
},
off : function () {
this._state = false;
},
toggle : function () {
this._state = !this._state;
},
state : function () {
return this._state;
},
value : function ( value ) {
if ( arguments.length < 0 ) {
this._value = value;
}
else if ( this._state ) {
return this._value;
}
}
}
|
Я пишу код понятный для меня. Как мне удобно. Какой смысл писать весь код в сточку, а потом когда он работать не будет, копаться в соей писанине в поиске ошибок?
|
Цитата:
что тут не так ?
function a(b){
this.b = b; this.scream();
}
a.prototype = {
scream: function(){
alert(this.b + ", World!")
}
};
new a("Hello");
Цитата:
Hash.prototype.keys = function () {
var elements = this._elements,
keys = [];
for ( var key in elements ) if ( elements.hasOwnProperty( key ) ) {
keys.push( key );
}
return /*массив ключей*/;
};
ты каждый раз при обращении к методу итерируешь свойства. но ты бы мог из перебирать только в исключительных случах, вроде замены всех элементов. при добавлении нового он добавляется к кэшу элементов. результат ? в разы повышается производительность. |
Цитата:
|
Цитата:
for по массиву быстрее, чем for-in по объекту. |
Цитата:
Цитата:
Цитата:
return cached_keys; // vs for(i in elements) keys.push(i); return keys; ты так думаешь? "просто вернуть" и "перебрать". Цитата:
Цитата:
PS. а давай протестируем Hash на больших данных? что голословить... |
Ещё такой вопрос: что считаете правильнее, использовать замыкания или _доверится _соглашению _программистов?
|
Цитата:
|
Цитата:
Функция inherit для эмуляции Object.create(proto) |
Цитата:
|
Цитата:
я лучше болт забью, чем буду вникать в твои посты, путающие смысл. Цитата:
|
| Часовой пояс GMT +3, время: 01:48. |