Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 31.12.2015, 01:31
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от рони
причём тут прототипы не понимаю
А кто сказал, что они тут причем? Перечитайте ветку, Вы вообще о чем то о своем...

Но вообще, то что Вы показываете -- это говнопаттерн. Объекты нельзя использовать в качестве хешей, если приходится это делать -- это верный признак говноархитектуры. Но это ладно
Сообщение от рони
причём тут прототипы не понимаю
Вообще то они к разговору не имеет никакого отношения, почему они вам всюду мерещаться, я не знаю, но в вашем случае они и вправду, как-бы, причем
var arr = []
function find(arr, obj) {
     return arr.every(function(el) {
         return el.a != obj.a || el.b != obj.b     
}) } 
var obj = Object.create({a: 1, b: 1}); obj.c = 3
find(arr, obj) && arr.push(obj);
obj = {a: 2, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 1, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 1, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 2, b: 2};
find(arr, obj) && arr.push(obj);
alert(JSON.stringify(arr))

///[{"c":3},{"a":2,"b":1},{"a":2,"b":2}]
Ответить с цитированием
  #22 (permalink)  
Старый 31.12.2015, 01:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от callbackhell
var obj = Object.create({a: 1, b: 1}); obj.c = 3
это зачем?
Сообщение от callbackhell
Но вообще, то что Вы показываете -- это говнопаттерн. Объекты нельзя использовать в качестве хешей, если приходится это делать -- это верный признак говноархитектуры.
почему?
Ответить с цитированием
  #23 (permalink)  
Старый 31.12.2015, 01:42
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от рони
это зачем?
Ну ваша функция принимает произвольный объект, а не заранее подготовленный, правильно? Это просто пример объекта, который может попасть на вход вашей функции.
>>почему?
Потому что объект имеет другую семантику. Если уж используете таким образом, то хотя бы ограничивайтесь собственными слотами.
Ответить с цитированием
  #24 (permalink)  
Старый 31.12.2015, 01:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от callbackhell
Это просто пример объекта, который может попасть на вход вашей функции.
это вакумный конь вашей фантазии.
Сообщение от callbackhell
Если уж используете таким образом, то хотя бы ограничивайтесь собственными слотами.
я не понимаю что значат эти слова, можно пример или пояснение?
Ответить с цитированием
  #25 (permalink)  
Старый 31.12.2015, 01:52
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

рони,
Вам бесполезно что-либо объяснять, Вы совершенно не понимаете программирования, всюду Вам мерещатся кони, заговоры массонов, а JS -- язык с динамическим ООП, не самая простая для понимания вещь. Вам с нуля надо начинать. Ну, или продолжайте быдлокодить на Jquery, как вариант.
Ответить с цитированием
  #26 (permalink)  
Старый 31.12.2015, 01:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от callbackhell
[{"c":3},{"a":2,"b":1},{"a":2,"b":2}]
функция отработала правильно не смотря на ваши старания, с остальным не хотите не обьясняйте, дело ваше.
Ответить с цитированием
  #27 (permalink)  
Старый 31.12.2015, 01:58
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от рони
функция отработала правильно
Так функции всегда отрабатывают "правильно", движок по-другому не может. только не всегда так, как ожидается
Ответить с цитированием
  #28 (permalink)  
Старый 31.12.2015, 02:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от callbackhell
только не всегда так, как ожидается
вода мокрая, вжик сказала пила, когда ей подсунули камень.
С Новым годом!!!
Ответить с цитированием
  #29 (permalink)  
Старый 31.12.2015, 02:09
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от рони
С Новым годом!!!
Взаимно
Ответить с цитированием
  #30 (permalink)  
Старый 01.01.2016, 21:29
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от callbackhell
конструкция {a: 1} это сахар для new function(){this.a = 1}
Нет, это не так.
var x = {a: 1} есть то же самое что и код
var x = new Object();
x.a = 1;


конструкция с анонимной функцией дает чуть более длинную цепочку прототипов для объекта - в этом случае x.__proto__ будет прототипом анонимной функции, а x.__proto__.__proto__ равно Object.prototype
А для x = {a: 1} уже x.__proto__ равно Object.prototype
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ext.app.Application-cfg-namespaces - не работает для Store khusamov ExtJS 1 21.11.2015 04:20
Проблема с наполнением массива объектов - последний элемент заменяет собой все... Джангар AJAX и COMET 5 18.12.2014 22:54
скрипт multibox для joomla - не работает в опере lamanzh Opera, Safari и др. 17 26.06.2009 12:35
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
Не работает AppendChild для div, причём только в IE _Kpot_ Internet Explorer 5 12.02.2009 10:55