这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战前端
在经常使用的引用类型中,Object 数一数二,尽管你发现 Object 实例并无多少功能,但却很适合存储和在应用程序之间交换数据。 建立 Object 实例有两种方式, 一种是使用 new 操做符,还有一种是使用字面量的形式。后者更常使用,在建立大量属性的对象时,字面量形式显得更为简洁和方便。示例:web
// new 操做符形式
const obj = new Object();
// 字面量形式
const obj = {
name: "Sam"
};
复制代码
在这个例子中的字面量形式中,左大括号表示对象字面量开始,由于它出如今一个表达式上下文中。在 ECMAScript 中,表达式上下文指的是期待返回值的上下文。赋值操做符表示后面要期待一个值,所以左大括号表示一个表达式的开始。一样是左大括号,若是出如今语句上下文中,好比 if 语句的条件后面,则表示一个语句块的开始。 虽然两种方式均可以建立对象实例,实际上大多数的开发者更倾向于使用对象字面量的方法建立,这样看起来不只代码量更少,也更有封装全部相关数据的感受,在给函数传递大量可选参数的时候,也是不错的方案。示例:markdown
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"
复制代码
当属性名中出现关键字或者错误语法的字符,更推荐使用中括号的形式读取。例如:post
obj["first name"] = "Sam";
复制代码
因为first name
中包含了一个空格,因此不能用点语法来读取,推荐使用中括号形式。测试
写做不易,但愿能够得到你的一个「赞」。若是文章对你有用,能够选择「收藏」。 若有文章有错误或建议,欢迎评论指正,谢谢你。❤️网站