cainrus,
не хотите делать так, как принято в языке, на котором пишете, можете просто игнорировать мои сообщения. |
Sweet,
pointer теперь в зоне видимости и к нему открытый доступ через FirstObject.pointer |
Kolyaj:
Вы говорите не о том как принято в языке, а о том как удобно разработчикам, потому что Вам не нравятся какие-то "костыли". в php тоже были костыли для нереализованных возможностей языка, затем некоторые костыли реализовали. А в javascript слово private зарезервировано для будущего использования, т.е. это говорит о том, что возможно это когда-то будет реализовано и принято. |
Цитата:
|
Вот, навскидку:
Object.prototype.key = (function(){ var storage = [], _undefined; return function(value){ if(value!=_undefined){ for(var i=0; i<storage.length; i++) if(storage[i].object==this){ storage[i].value = value; return value; } storage.push({object:this,value:arguments[0]}); return value; } for(var i=0; i<storage.length; i++) if(storage[i].object==this) return storage[i].value; return _undefined; } }()) var FirstObject = {}, SecondObject = {}; FirstObject.key(100); SecondObject.key(999); alert([FirstObject.key(), SecondObject.key()]); |
Sweet:
Удивляюсь как вы до этого дошли. Работает так как требовалось. Первоначально я всего лишь хотел реализовать функционал для массива как в php: next, prev, current, end, reset, key. Всё застопорилось, когда я обнаружил, что внутренний указатель во всех массивах везде одинаков. |
Sweet,
Вопрос а если value = 0 ? FirstObject.key(0)=null а надо наверно FirstObject.key(0)=0. Вопрос к желающим как правильно сделать проверку наличия агрумента у функции? |
Цитата:
Цитата:
|
Цитата:
http://alljs.ru/articles/undefined.html#args |
Цитата:
|
Часовой пояс GMT +3, время: 05:15. |