js 一个对象的属性名是一个变量怎么处理?

JavaScript07

js 一个对象的属性名是一个变量怎么处理?,第1张

1.这种方法的属性(setAttrName)可以是一个变量。

var obj = {}

obj[setAttrName] = 'Tom'

2.这样就可以动态的给js对象添加变量属性。

var obj = {

attr: {

}

}

var egData = ['oneAttr', 'twoAttr', 'threeAttr']

for (var i = 0 i < egData.length i++) {

obj.attr[egData[i]] = false

}

资料拓展:

创建 JavaScript 对象

通过 JavaScript,您能够定义并创建自己的对象。

创建新对象有两种不同的方法:

1.定义并创建对象的实例

2.使用函数来定义对象,然后创建新的对象实例

对象[变量]

比如obj是一个对象,它有个属性是name:

var x = "name"

var n = obj[x] //获取属性值

obj[x] = "XXX" //设置属性值

补充说明:对象属性的使用有两种方式:

obj.name

obj["name"]

第二种方式的属性名是个字符串,这就为变量的使用制造了可能性。

这一章,我们将好好去看看一个特殊的变量,对象。

我们先看看官方的定义:无序属性的集合,其属性可以包含基本值,对象,或者函数。从字面意思上,我们可以理解为对象是一个没有特定顺序的的集合,对象的每一个属性和方法都有一个自己的名称,每一个名称都会有一个值,当然这个值,可以使对象,函数。以及其他基本类型数据。

不过还是太抽象了,我个人其实更倾向于将对象理解成一个“图纸”,一个建房子的图纸,在这个图纸上,我们标明了房子的具体形状,哪里开窗户等等一系列的参数,那么说到对象,就必然会说到实例,同样的道理,在我的理解里,实例,就是按照“图纸”来创建的一个个房子。那么对象这个图纸,有哪些属性和方法呢?

对象有两种属性:数据属性以及访问器属性

那么我们如何去修改以及设置这些值呢?好在js提供了一个方法, Object.defineProperty(obj(属性所在的对象),name(属性的名称),dataTypeObj(所要处理的数据类型)) 方法,如果不指定参数的话,以上1,2,3个数据属性都将是默认值true,如果指定了参数,将会将对象的具体属性的数据属性类型进行特殊处理。下面我们已房子图纸为例,来看下如何处理

复制到控制台,我们看下会显示什么

在控制台看下结果

在控制台中没有任何的输出,说明无法通过for in 来循环出书数据

上面我们说明了对象的4个数据类型,下面我们来看看对象的访问器属性

访问器属性是成对出现的,存与取

同时对于访问器属性,js同样提供了configurable以及enumerable属性。如果不设置值的话,将默认为false.

同数据属性一样,访问器属性不能跟直接的定义,只能通过Object.defineProperty()方法来设置。同样以上面的例子来说明

我们明明在赋值的时候给的是20000,为啥后面会多一个元呢?这就是get的功能。这样当我们赋值以及读取的时候我们都能够实时的监控了,这也就使得vue的诞生了,后面详细说下vue的原理。(又挖一个坑)

那么我们如何去读取一个对象的属性值呢?

在js中,我们难免会需要知道一个对象的数据属性以及访问器属性具体设置的值,所以js提供了 Object.getOwnPropertyDescriptor() 方法,来获取,同样以上面的例子来举例。

至此,我们关于对象的基本知识说完了,下一章,我们将一起来看看对象的创建