30.09.2010, 17:59
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
cainrus,
не хотите делать так, как принято в языке, на котором пишете, можете просто игнорировать мои сообщения.
|
|
30.09.2010, 18:07
|
Интересующийся
|
|
Регистрация: 30.09.2010
Сообщений: 13
|
|
Sweet,
pointer теперь в зоне видимости и к нему открытый доступ через
FirstObject.pointer
|
|
30.09.2010, 18:13
|
Интересующийся
|
|
Регистрация: 30.09.2010
Сообщений: 13
|
|
Kolyaj:
Вы говорите не о том как принято в языке, а о том как удобно разработчикам, потому что Вам не нравятся какие-то "костыли".
в php тоже были костыли для нереализованных возможностей языка, затем некоторые костыли реализовали.
А в javascript слово private зарезервировано для будущего использования, т.е. это говорит о том, что возможно это когда-то будет реализовано и принято.
Последний раз редактировалось cainrus, 30.09.2010 в 18:17.
|
|
30.09.2010, 18:25
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от cainrus
|
pointer теперь в зоне видимости и к нему открытый доступ через FirstObject.pointer
|
Это вполне очевидно Я и не понял по-началу, что этого не должно быть Это объясняет затеяние
|
|
30.09.2010, 18:47
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Вот, навскидку:
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, 01.10.2010 в 12:59.
Причина: Добавил возможность хранить значения false, 0 и т.п.
|
|
30.09.2010, 19:17
|
Интересующийся
|
|
Регистрация: 30.09.2010
Сообщений: 13
|
|
Sweet:
Удивляюсь как вы до этого дошли. Работает так как требовалось. Первоначально я всего лишь хотел реализовать функционал для массива как в php: next, prev, current, end, reset, key. Всё застопорилось, когда я обнаружил, что внутренний указатель во всех массивах везде одинаков.
|
|
01.10.2010, 10:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Sweet,
Вопрос а если value = 0 ? FirstObject.key(0)=null а надо наверно FirstObject.key(0)=0.
Вопрос к желающим как правильно сделать проверку наличия агрумента у функции?
|
|
01.10.2010, 11:44
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от рони
|
Вопрос к желающим
|
??? К Каким желающим?
Сообщение от рони
|
как правильно сделать проверку наличия агрумента у функции?
|
Проверить свойство arguments.length либо typeof arguments[0] != 'undefined'.
|
|
01.10.2010, 12:24
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Sweet
|
Проверить свойство arguments.length либо typeof arguments[0] != 'undefined'.
|
Никаких либо.
http://alljs.ru/articles/undefined.html#args
|
|
01.10.2010, 12:56
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от Kolyaj
|
Никаких либо.
|
Почему так категорично? Я специально сделал именно typeof != 'undefined', потому что в данном случае по-моему неоправданным считать 'undefined' за аргумент. Ведь это же не хранилище неопределенности
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
вопр. замыкание |
Shaci |
jQuery |
6 |
05.03.2010 12:21 |
|
|
|