JS中的对象
Posted ianyanyzx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中的对象相关的知识,希望对你有一定的参考价值。
对象
概念:简单说,所谓对象,就是一种无序的数据集合,有若干个“键值对”(key-value)构成。
var obj = { name : ‘tom‘, sex : ‘man‘ };
上面代码中,大括号就定义了一个对象,这是一种字面量的写法,它被复制给变量 obj 。 这个对象内部包含了一个键值对(又称为“成员”), name 和 sex 是“键名”(成员的名称),字符串“tom”和“man”是“键值”(成员的值)。键名和键值之间用冒号分割。如果对象内部包含多个键值对,每个键值对之间用逗号分割。
键名
对象的所有键名都是字符串,可以加引号也可以不加引号。如果键名是数值,会被自动转换成字符串。
var o = { 1 : ‘a‘, 3.2 : ‘b‘ }
上面以数值作为键名都会转换成字符串
如果键名不符合标识符的命名规则(比如第一个字符为数字,或者含有空格或运算符),也不是数字,则必须加上引号,否则会报错。
var o ={ ‘1p‘ : "Hellow World", ‘h w‘ : "Hellow World", ‘p+q‘ : ‘Hellow World‘ };
上面的键值不符合标识符的命名规则,所以必须要加引号
对象的每一个“键名”又称为“属性”(property),它的“键值”可以是任何的数据类型。如果一个属性的值为函数,通畅把这个属性成为“方法”,它可以像函数那样调用。
var obj = { p: function(){...} };
关于属性的操作
对象的属性有两种方法可以读取:
var obj = { name: ‘tom‘, sex:‘man‘ };
obj.name //"tom"
obj[‘sex‘] //"man"
可以通过对象名后面加点“.”的方式,也可以对象名后面加['']。
注意:如果键名是数值的话,不能用“.”的方式获取对象的属性,这样会报错,而用方括号的方式引号加不加上都可以。
对象的属性可以动态的创建
var obj = { name: ‘tom‘, sex:‘man‘ }; obj.age = 20; obj.age //20
上面代码对对象动态创建了一个属性且赋值。
对象的操作
1)查看所有属性
可以用 Object.keys 方法查看对象的所有属性。
var obj = { name: ‘tom‘, sex:‘man‘ }; Object.keys(obj) //["name", "sex"]
2)删除对象的属性
用delete方法可以删除对象的属性,删除成功后返回true。
var obj = { name: ‘tom‘, sex:‘man‘ }; delete obj.sex //true obj.sex //undefined Object.keys(obj) //["name"]
注意!删除一个本来就没有的属性是不会报错的,还是会返回true
3)in运算符
in运算符可以检查对象是否包含某种属性,如果包含返回true,反之返回false。
var obj = { name: ‘tom‘, sex:‘man‘ }; ‘name‘ in obj //true
4)for...in 循环
for...in 循环可以遍历对象的所有属性
var obj = { name: ‘tom‘, sex:‘man‘ }; for(var keys in obj){ console.log(obj[i]); } //"tom" //"man"
其他要点
对象的引用
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。
var o1 = {}; var o2 = o1; o1.a = 1; console.log(o2.a); //1 o2.b = 2; console.log(o2.b); //2
上面代码中,o1
和o2
指向同一个对象,因此为其中任何一个变量添加属性,另一个变量都可以读写该属性。
此时,如果取消某一个变量对于原对象的引用,不会影响到另一个变量。
var o1 = {}; var o2 = o1; o1 = 1; o2 // {}
上面代码中,o1
和o2
指向同一个对象,然后o1
的值变为1,这时不会对o2
产生影响,o2
还是指向原来的那个对象。
但是,这种引用只局限于对象,如果两个变量指向同一个原始类型的值。那么,变量这时都是值的拷贝。
var x = 1; var y = x; x = 2; y // 1
上面的代码中,当x
的值发生变化后,y
的值并不变,这就表示y
和x
并不是指向同一个内存地址。
参考资料:http://javascript.ruanyifeng.com/grammar/object.html#toc4
以上是关于JS中的对象的主要内容,如果未能解决你的问题,请参考以下文章
谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js
VSCode自定义代码片段12——JavaScript的Promise对象