这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
在常用的引用类型中,Object 首屈一指,尽管你发现 Object 实例并没有多少功能,但却很适合存储和在应用程序之间交换数据。 创建 Object 实例有两种方式, 一种是使用 new 操作符,还有一种是使用字面量的形式。后者更常使用,在创建大量属性的对象时,字面量形式显得更为简洁和方便。示例:
// new 操作符形式
const obj = new Object();
// 字面量形式
const obj = {
name: "Sam"
};
在这个例子中的字面量形式中,左大括号表示对象字面量开始,因为它出现在一个表达式上下文中。在 ECMAScript 中,表达式上下文指的是期待返回值的上下文。赋值操作符表示后面要期待一个值,因此左大括号表示一个表达式的开始。同样是左大括号,如果出现在语句上下文中,比如 if 语句的条件后面,则表示一个语句块的开始。 虽然两种方式都可以创建对象实例,实际上大多数的开发者更倾向于使用对象字面量的方法创建,这样看起来不仅代码量更少,也更有封装所有相关数据的感觉,在给函数传递大量可选参数的时候,也是不错的方案。示例:
function person(obj) {
let output = "";
if (typeof obj.name == "string"){
output += "My name: " + obj.name;
}
if (typeof obj.age == "number"){
output += "My age: " + obj.age;
}
console.log(output);
}
person({ name: "Sam", age: 25});
person({ name: "Echo"});
这里,函数person()接收一个名为 obj 的参数。这个参数可能有属性 name 或 age,也可能两个属性都有或者都没有。函数内部会使用 typeof 操作符测试每个属性是否存在,然后根据属性有无构造并显示一条消息。然后,这个函数被调用了两次,每次都通过一个对象字面量传入了不同的数据。两种情况下,函数都正常运行。
大多数情况,访问属性一般是通过点去读取,当然也可以用中括号来读取属性,在使用中括号时,属性名必须以字符串的形式。示例:
const obj = {name:"Sam"}
console.log(obj.name); // "Sam"
console.log(obj["name"]); // "Sam"
当属性名中出现关键字或者错误语法的字符,更推荐使用中括号的形式读取。例如:
obj["first name"] = "Sam";
由于first name中包含了一个空格,所以不能用点语法来读取,推荐使用中括号形式。
写在最后
写作不易,希望可以获得你的一个「赞」。如果文章对你有用,可以选择「收藏」。 如有文章有错误或建议,欢迎评论指正,谢谢你。❤️