gpt4 book ai didi

javascript - 对象作为对象属性名称?

转载 作者:行者123 更新时间:2023-11-28 13:52:39 24 4
gpt4 key购买 nike

这在 JavaScript 中可能吗?

我正在尝试将对象的属性名称设置为“HTMLInputElement”:

var el = $('#something').get(0),
obj = {};

obj[el] = 'some random data';

但我认为这不起作用:(

我收到一些错误:

ncaught Error: Syntax error, unrecognized expression: [object HTMLInputElement]

但我不确定这是否是因为我正在尝试做的事情:)

但是,当我 console.log(obj) 时,它看起来很好,键名称内有“object HTMLInputElement”,但我不知道它是一个真实的对象,还是只是一些字符串

最佳答案

这当然是可能的。属性括号之间的任何内容都是允许的。调用 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 轻松解决。 .

关于javascript - 对象作为对象属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com