JS笔记之JS对象基础知识(一)
JS笔记之JS对象基础知识(一)
js 对象是用来存储键值对或者更复杂的实体信息。
1 创建空对象的两种方法
1 | let user = new Object(); // “构造函数” 的语法 |
1.1 创建对象
1 | let user = { // 一个对象 |
对象属性的操作
1 | console.log(user.age); // 获取对象 |
创建对象也可以使用对个词语作为属性名
1 | let user = { |
对象的最后一个属性应以逗号结尾,这叫做尾随(trailing)或悬挂(hanging)逗号。这样便于我们添加、删除和移动属性,因为所有的行都是相似的。
如果在对象中使用多词语属性,那么就不能使用【对象.属性】来获取对象的属性值, 必须使用方括号。
因为点符号要求是有效的变量标识符,所以不能包含空格、不以数字开头、也不包含特殊符号(除了_
和$
)
1 | console.log(user["likes birds"]); |
1.2 计算属性
可以通获取变量来动态的创建对象属性,这叫做计算属性。
1 | let fruit = prompt("Which fruit to buy?", "apple"); |
1.3 属性值简写
1 | function makeUser(name, age) { |
在上述的例子中属性名和属性值一样,可以使用简写的形式,类似下面这种, 也可以进行混用。
1 | function makeUser(name, age) { |
1.4 属性名称限制
在定义变量的时候, 我们不能使用js的一些和关键字保留字,但是在定义对象的属性时, 是可以使用的。所以对象的属性名是没有限制的,属性名可以是任意的字符串或者是symbol。例如
1 | let obj = { |
1.5 属性存在性测试, ‘in’ 操作符
在Python中获取一个对象的不存在的属性时会直接抛出异常,而js则不会,
1 | dict_ex = { |
1 | let user = {}; |
检查属性是否存在的操作符 "in"
,语法格式:'key' in object
例如:
1 | let user = { name: "John", age: 30 }; |
使用in
和使用===undefined
判断属性是否存在的区别,那就是当一个对象的属性存在,但是他的值恰好就是undefined
, 此时使用 ===undefined
就无法准确地判断对象属性是否存在(这种情况也少之又少)。
1.6 for…in 循环
主要用来遍历对象的所有的键。
1 | for (key in object) { |
1.7 对象有顺序吗?
有但不多,对像中的整数的属性会被排序,以升序排列,其他的属性会按照创建的顺序显示。例如:
1 | let codes = { |
整数属性的解释:这里的“整数属性”指的是一个可以在不做任何更改的情况下与一个整数进行相互转换的字符串,像是 “+49” 或者是 “1.3342” 就不行了。
所以为了解决以上的例子,能够按属性的定义顺序输出可以在属性名前加一个+
号。
1 | let codes = { |