Объектный код
Как научится правильно писать гибкий объектно ориентированный код?
Обычно я делаю как-то так 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, время: 00:50. |