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, время: 21:10. |