红宝书 📒 6.1 集合应用类型-object

145 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

Object

对象,实质上是存储数据的一个集合。

声明对象的方式有如下两种:new操作符 和 字面量(*)

创建

new操作符

let obj = new Object()

为对象添加属性的方式同样有两种

obj.name = 'Bob'
obj['_sex'] = 'boy'

字面量(*)

字面量的声明方式更为常用。在使用对象字面量表示法定义对象时,并不会实际调用Object构造函数。

let obj ={}

存取值

存取值可以使用.['属性名'] 的方式。

new操作符

let obj = new Object()
obj.name = 'Linda'   //存值
console.log(obj.name) // 取值

字面量

let obj = {
 name:'robot',
 age:29
 }
 obj.name

而字面量的创建方式除了可以使用字符串的属性名还可以使用数值型的属性名。而new关键字的创建方式,只能使用字符串的属性名

let obj = new Object()
obj.1 = '12' // Uncaught SyntaxError: Unexpected number
let obj1 = {
    1:'id'
}

但是如果我想获得属性名是1的属性值,是会报错的。

console.log(obj1.1)  // Uncaught SyntaxError: Unexpected number

那么另一种获取属性值的方式就出现了:[]

console.log(obj1[1])

同样,也解决属性名中有空格的问题

obj["first name"]  //中间有空格
obj1.first name    // Unexpected identifier

而且当我们属性名是一个变量的时候,也必须使用[]

let obj ={name:'test'}
let a = 'name'
obj[a]   // 'test'

对象字面量的用途

函数传递可选参数

function displayInfo(args){
    let output = "";
    if(typeof args.name == 'string'){
        output += "Name:" +args.name + "\n"
    }
    if(typeof args.age == 'number'){
        output += "Age:" +args.age + "\n"
    }
    return output
}
// 两个参数
displayInfo({
    name:'Nicholas',
    age:29
})
// 一个参数
displayOnfo({
    name:'Greg'
})
// 没有参数
displayInfo({})

原始包装类

什么是原始包装类 如下:

let str = new String()
let bool = new Boolean()
let num = new Number()
typeof str   // object
typeof bool // object
typeof num  // object

三者其实都是属于object类型的,如果想深入了解,Y请移驾