使用变量动态设置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是不存在的.  

时间: 2024-12-24 11:38:27

使用变量动态设置js的属性名的相关文章

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

目标:js的属性名可以使用变量 举例:js对象object,当赋给该对象属性的时候可以采用以下方式 复制代码 代码如下: var object; object.prop1 = "value1"; object.prop2 = "value2"; 也可以采用如下方式: 复制代码 代码如下: object.push({prop1:"value1"}); object.push({prop2:"value2"}); 在这里prop1

mybatis-Mybatis 属性可以动态设置吗

问题描述 Mybatis 属性可以动态设置吗 teradataOrderBy 属性的值可以动态设置吗

用JS动态设置CSS样式常见方法小结(推荐)_javascript技巧

用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性 某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px'; element.style.height = '100px'; 2. 直接设置属性(只能用于某些属性,相关样式会自动识别) element.setAttribute('height', 100);

js中动态创建json,动态为json添加属性、属性值的实例_javascript技巧

如下所示: var param = {}; for(var i=0;i<fields.length;i++){ var field = fields[i]; if(field.searchCondition != undefined && $('#search'+field.name).val() != ''){ param["search."+field.name]=$('#search'+field.name).val(); } } 在js中,一个[]认为是数

后台动态设置前台标签内容和属性

动态|后台|后台 和以前的asp不同,在asp.net中为了彻底的代码分离,我们一般不采用<%=%>嵌入标签中来设置一些属性和内容.一般来说有2种情况:(一)设置标签的内容,比如<title>这里</title>(二)设置标签的属性,比如<body bgcolor=这里>(三)动态加载一些script先看一下(一)和(二):前台<title id="mytitle" runat="server"></

.net-如何动态设置GridView的DataKeyNames属性

问题描述 如何动态设置GridView的DataKeyNames属性 在网页中,根据用户之前的操作,来确定DataKeyNames的值是A,还是B,如何做呢? 解决方案 做两个页面,一个DataKeyNames的值是A,另外一个DataKeyNames的值是B,用户不同的操作转向不同的页面

html动态设置selected属性

问题描述 html动态设置selected属性 请问下在html下使用jsp怎样动态更具pfound的值来设置默认显示的option如下图 解决方案 哦这个问题么. 未已 一般这么做啦.除非是多选菜单才需要在option上做文章. 解决方案二: 你的 pfound 的值接收到了没.如果获取到就没有问题 解决方案三: 你的 pfound 的值接收到了没.如果获取到就没有问题 解决方案四: <select value=""1""> <option va

js对象根据属性名表达式解析成新的对象

问题描述 js对象根据属性名表达式解析成新的对象 如今有一个对象如下 var obj = { "name": "zhansan", "age": 21, "parent.name": "lisi", "parent.age": 44, "girlfriend[0].name": "fanbinbin", "girlfriend[0].ag

JS动态给对象添加属性和值的实现方法_javascript技巧

如下所示: var obj={}; for(var i=0;i<10;i++){ eval("obj.p"+i+"="+i); } 以上就是小编为大家带来的JS动态给对象添加属性和值的实现方法全部内容了,希望大家多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js 北京赛车冠亚和值技巧.时时彩和值技巧.福彩3d和值计算技巧.快3和值技巧.重庆时时彩和值技巧,以便于您获取更多的