如何使用jQuery访问Javascript中作为函数参数的对象的变量名称
How do I access the variable name of an object that is a function argument in Javascript with jQuery?
var myObj = {
key: "element",
key2: "element2"
}
function stuff(obj) {
var a = obj;
console.log(a);
}
stuff(myObj);
如何制作东西(myObj(控制台.log myObj,这是对象的名称?如果我运行这段代码,它会打印 myObj 传递给东西的参数是一个对象和控制台.log它的键和元素。我希望 var a 存储和控制台.log对象的名称而不是其内容,在本例中为 myObj。
你不能。JavaScript 按值传递,与用于传递对象的变量没有连接。
举个例子:
var foo = {};
var bar = foo;
window.baz = bar;
stuff(foo);
function stuff(obj) {
var a = obj;
console.log(a);
}
您现在有 5 个变量/属性,它们都是同一对象的"名称"。
如果需要对象具有某种标识名称,请将其作为属性提供。
var foo = { name: "foo" };
使用循环
for-in
循环访问对象。a
和b
是对象的键,映射到元素id
。
试试这个:
var obj = {
a: "A",
b: "B"
};
for (var i in obj) {
$('#' + i).hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>
<div id="d">D</div>
这是可能的!你可以做这样的事情:
function stuff(obj) {
var a = Object.keys(window);
a.forEach(function(item, i, a) {
if (window[item] == obj)
{
console.log((item);
}
});
}
没有(好的(方法可以做到这一点。myObj 变量有一个指向内存中对象的指针。当你将 myObj 作为参数发送到函数时,它将通过引用发送,因此函数的 obj 参数也将具有指向内存中对象的指针。此时,全局变量 myObj 和局部变量 obj 是同一对象的同义词。修改一个变量的属性也会影响另一个变量。理论上可能有数百个变量指向同一个对象,但该对象永远不会有任何指向它的变量的链接,因此无法检索对象的名称。没有正确的或原始的变量:所有变量都是相同的,无论它们以什么顺序链接到这个对象。
也就是说,当然,如果myObj是一个全局变量,则可以将您的变量与窗口对象的所有属性进行比较,然后知道它最初是哪个变量,但这是对处理能力的严重浪费。它仅适用于全局变量。
所以这应该可以解决全局变量的问题,但我强烈建议不要这样做(最重要的是,如果它是一个有很多全局变量的大项目(。不过,如果在编码期间仅用于调试,我认为这就是全部内容,它可能会有所帮助:
function getVariableName(x) {
for (var i in window) {
if (window[i] === x) return i;
}
return false;
}
注意:如果你有多个全局变量指向这个对象,就没有办法知道你会得到哪些变量名......JavaScript 没有定义枚举对象属性的固定顺序。第一场比赛将被报告!
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆