Это, конечно, возможно.Все, что находится в скобках, разрешено.Вызывается метод toString()
.
// Test case:
var obj = {};
obj[document.body] = '1';
console.log(JSON.stringify(obj)); // Shows {"[object HTMLBodyElement]":"1"}
Проблема
После прочтения ваших комментариев я вижу, что вы пытаетесь сделать: Созданиекарта элементов DOM, для последующего использования в оболочке jQuery.Это не работает, потому что, как я уже говорил, ключи - это строки.
// Your intentions:
var obj = {};
var body = $('body').get(0);
obj[body] = {secret: 'Some text'};
$.each(obj, function(elem, data) {
// Example:
$(elem).text(data.secret);
// Expected (filled in variables):
$(body).text('Some text');
// What actually happens
$('[object HTMLBodyElement]').text('Some text');
// ^^^^^^^^^^^^^^^^^^^^^^ This is an invalid jQuery selector!
});
Решение
Использование WeakMap
объектов для связывания объектов в виде пар ключ-значениебез принуждения стринга.Это не очень хорошо поддерживается, но это легко решить, используя polyfill .