Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2014, 21:40
Интересующийся
Отправить личное сообщение для Brainsss Посмотреть профиль Найти все сообщения от Brainsss
 
Регистрация: 17.11.2014
Сообщений: 10

ключ объекта ссылка на объект
var start = {};
var obj = {};
var a = start;
obj.a = 5;
for(var key in obj){
	console.log(key === start);
}

Всем привет. Подскажите как правильно сделать что бы получилось true? Нужно передать ключом объекта объект, и получить в итоге при сравнении ключа и объекта истину. Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2014, 21:48
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

в качестве ключей нельзя ничего использовать кроме строк, а все иные типы будут автоматически переведены в строки. Ваша просьба в данном случае не выполнима.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2014, 21:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Хз, что тебе надо. Может так?
var obj = {};
var a = 'start';
obj[a] = 5;
for(var key in obj){
    console.log(key === 'start');
}
Ключами в объектах javascript могут только строки, если что. (и Symbol в новом стандарте)
Для произвольных ключей в новом стандарте есть Map, но он только для современных браузеров. С Map как-то так:
var start = {};
var map = new Map();
map.set(start, 5);
map.forEach(function(value, key){
    console.log(key === start);
})
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2014, 00:16
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от devote
в качестве ключей нельзя ничего использовать кроме строк
Так он и использует строку.
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2014, 00:23
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от devote
а все иные типы будут автоматически переведены в строки.
Это как? так чтоли:
o={}
o.{}="bar"

???

ЗЫ все, понял, вот так
o={}
o.false="foo"

Но не со всеми типами это прокатывает. И, в данном случае, подстрока false в выражении o.false - это и есть строка изначально, она никакого отношения к false вообще не имеет. Тут "преобразование", такое же как foo.foo=1, т.е. семантически -- никакого.

Последний раз редактировалось krutoy, 08.12.2014 в 00:31.
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2014, 01:12
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Возможно, ты хотел вот этого
var start = {};
var obj = {};
var a = start;
obj.a = 5;
obj.b = start;
for(var key in obj){
    console.log(obj[key] === start);
}

//  false
//  true

только не ясно, зачем.

Последний раз редактировалось krutoy, 08.12.2014 в 01:28.
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2014, 08:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Сообщение от krutoy Посмотреть сообщение
Это как? так чтоли:
o={}
o.{}="bar"
Это так:
o={}
o[{}]="bar"
alert(o['[object Object]'])
наркоман несчастный.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2014, 13:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от devote Посмотреть сообщение
в качестве ключей нельзя ничего использовать кроме строк, а все иные типы будут автоматически переведены в строки. Ваша просьба в данном случае не выполнима.
Вариант:
Кодирнуть объектную строку в btoa() и её использовать и как ключ и как расшифровку(atob()) ключа в объект
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2014, 13:15
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Deff,

o={}
o["{foo: 1}"]={foo: 1}
if("{foo: 1}" in o) alert(typeof o["{foo: 1}"])

Последний раз редактировалось krutoy, 08.12.2014 в 13:22.
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2014, 13:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

krutoy,
Моё красивше и обфусцированнее, эффективно для использовать для задания частоиспользуемых коротких функций JS библиотеки в небольших проектах
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить что объект принадлежит к разделу нативного DOM объекта devote Оффтопик 11 21.06.2014 00:39
как добавить свойство объекта в объект в объекте ? %) mitiya Общие вопросы Javascript 1 07.10.2012 14:46
Получение значения поля объекта зная путь к полю и сам объект mgvmax Общие вопросы Javascript 11 07.03.2012 19:09
создание объект, ключ которого - значение элемента другого объекта cmygeHm Общие вопросы Javascript 2 30.05.2011 12:57
Подскажите по CSS меню Александр_1988 Элементы интерфейса 1 17.05.2010 11:58