对象 - Object 基础

  1. 对象
    1. 计算属性
    2. 属性值简写
    3. 属性名限制
    4. 属性存在性与 in 操作符

对象

计算属性

如果想在创建对象时,使用动态的属性名称,可以使用方括号包裹,就像在访问对象时那样。

let fruit = "apple";
let prices = {[fruit]: 5,
}

属性值简写

如果对象的属性名称是已存在的变量,而其值就是这个已存在的变量的值时,可以:

function makeUser(name, age) {
    return {
        name,
        age,
    }
}

属性名简写方式和正常方式可以混用

属性名限制

属性名 __proto__ 被赋值为非对象值时,不会生效。

let obj = {};  // 不生效
obj.__proto__ = 5;  // 不生效
obj.__proto__ = undefined;  // 不生效
obj.__proto__ = false;  // 不生效
obj.__proto__ = "word";  // 不生效
obj.__proto__ = Symbol('dd');  // 不生效

属性存在性与 in 操作符

访问 JavaScript 对象不存在的属性是,不会报错,只是得到 undefined

let obj = {};
user.age === undefined; // true 意思是没有这个属性

操作符 “in”语法是:

"key" in object

左边的属性名必须带引号,否则视为一个变量,判断时,key 是这个变量的值。

let user = { name: "John", age: 30 };
let prop = "age"
"age" in user; // true
prop in user; // true

之所以会有 “in”操作符,是因为当属性对应的值就是 “undefined” 时。
不过,实际代码中通常使用 “null” 表示未知的值或空值(不管是不是对象类型)。

let sum = 0;
let b = {
... 7: 1,
... "+7": 2,
... "-7" : 3,
}
for (k in b) {
    sum += +k;
}
// sum  = 7

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间