当前位置: 首页 > 编程笔记 >

使用变量动态设置js的属性名

秦哲瀚
2023-03-14
本文向大家介绍使用变量动态设置js的属性名,包括了使用变量动态设置js的属性名的使用技巧和注意事项,需要的朋友参考一下

目标:js的属性名可以使用变量

举例:js对象object,当赋给该对象属性的时候可以采用以下方式


var object; 

object.prop1 = "value1";

object.prop2 = "value2"; 


也可以采用如下方式:

object.push({prop1:"value1"});

object.push({prop2:"value2"}); 


在这里prop1 作为属性名称,可以直接用,也可以加上引号,比如:

object.push({"<span style="font-family: Arial, Helvetica, sans-serif;">prop1</span>":"value1"}); 


表达的含义都是一样的,也就是说,prop1只能作为常量被识别,即使它是个变量也没用,例如:

var prop1 = "prop2"; 

object.push({prop1:"<span style="font-family: Arial, Helvetica, sans-serif;">value1</span>"}); 


这样通过object访问prop2会出现什么情况呢?比如:

alert(<span style="font-family: Arial, Helvetica, sans-serif;">object.prop2) </span> 


不用问,当然是undefined,而访问object.prop1却是"value1"

原因已经说过了,无论加不加引号,属性一律当成常量对待.再举一个例子:


var arr=[]; 

arr['js']='jquery'; 

arr['css']='oocss'; 

var obj={}; 

for(var i in arr) 

{

obj.i=arr[i]; } alert(obj.js);

读者不放猜一下alert会打印什么?

当然是undefined.

大家再猜一下,如果alert(obj.i)会打印什么?

当然是oocss,为什么?因为obj现在只有一个属性i,而且通过两次循环,obj.i前面的被后面的覆盖掉.

如果有需求,需要动态添加属性,也就是说,属性也必须是一个变量才行,如上例代码,alert(obj.js)不是undefined,而是jquery,该如何修改呢?


var arr=[]; 

arr['js']='jquery'; 

arr['css']='oocss'; 

var obj={}; 

for(var i in arr) 

{

obj[i]=arr[i]; } alert(obj.js);


就是那么简单!把对象obj当成一个数组来对待,它支持使用类似于下标形式的方法来把属性和属性值赋给对象.但是,对象依然是对象,obj.length是不存在的.

 类似资料:
  • 问题内容: 我正在尝试向angular js的控制器中的div动态添加属性。 一切看起来都很好,在调试器中,我看到该属性已添加,但它不执行我的功能。您是否有任何想法如何向现有div添加属性以及如何使其起作用? 问题答案: 您需要重新编译div http://jsfiddle.net/r2vb1ahy/

  • 我正在尝试使用动态名称访问对象的属性。这可能吗?

  • 问题内容: 我正在尝试使用动态名称访问对象的属性。这可能吗? 问题答案: 有两种方法可以访问对象的属性: 点表示法: 括号符号: 方括号之间的值可以是任何表达式。因此,如果属性名称存储在变量中,则必须使用方括号表示法:

  • 问题内容: 我需要动态设置JS对象属性名称。 结果应为: 问题答案:

  • 我能想到的唯一方法是,在不进行上述尝试的情况下,从一个字符串中设置每个属性,遍历每个属性,并使用if-else或switch-case逻辑来确定调用哪一个dataSource设置器来设置值。 那么,有没有一种方法可以在不调用每个单独的setter的情况下从字符串中动态设置这些属性呢? 当我在或中设置用户名时,它确实发生了变化,但我认为这可能是针对用户名和密码的,因为我试图设置的其他属性没有效果。

  • 问题内容: 如何在Python中动态设置局部变量(变量名是动态的)? 问题答案: 与已经发布的其他答案相反,你不能直接修改并期望它可以正常工作。 修改未定义。在函数外部,当和相同时,它将起作用;在一个函数内部通常将不起作用。 使用字典,或在对象上设置属性: 或者,如果你愿意,可以使用一个类: 编辑:访问不是函数的名称空间中的变量(因此,模块,类定义,实例)通常是通过字典查找来完成的(如Sven在注