新手javascript.info学习笔记——Object01

  • javascript中对象的表现形式类似于python中的字典,以键值对的形式存储在花括号中,例如
let user = {     // 一个对象
  name: "John",  // 键 "name",值 "John"
  age: 30        // 键 "age",值 30
};
  • 属性值可以是任意类型,可以使用点表达式访问属性值 ,用delete操作符删除属性,例如
alert( user.age ); 
delete user.age;
  • 列表中的最后一个属性应以逗号结尾,以便于添加、删除和移动属性:
let user = {
  name: "John",
  age: 30,
}
  • 对对象的操作同样可以用类似python字典的方括号
    let user = {};
    
    // 设置
    user["likes birds"] = true;
    
    // 读取
    alert(user["likes birds"]); // true
    
    // 删除
    delete user["likes birds"];

    不同之处在于,方括号会先evaluate其内部的值,而点表达式不会:

    let user = {
      name: "John",
      age: 30
    };
    
    let key = prompt("What do you want to know about the user?", "name");
    
    //使用方括号
    alert( user[key] ); // John(如果输入 "name")
    //点表达式不能
    let key = "name";
    alert( user.key ) // undefined

    再比如:

    let fruit = 'apple';
    let bag = {
      [fruit + 'Computers']: 5 // bag.appleComputers = 5
    };

    这里应用的是js中用加号进行字符串拼接的操作

  • 实际开发中,我们通常用已存在的变量当做属性名,因此可以这样缩写

    function makeUser(name, age) {
      return {
        name, // 与 name: name 相同
        age,  // 与 age: age 相同
        // ...
      };
    }

    属性名简写方式也可以和正常方式混用,比如把上面的age改为age:30。

  • 属性名称与变量名称不同,几乎没有限制,可以是任何字符串或者 symbol,其他类型会被自动地转换为字符串。

  • javascript中即使属性不存在也不会报错,读取不存在的属性只会得到 undefined。也可以用in检查属性是否存在(可以用来应对属性值本身是undefined的情况)
let user = { age: 30 };

let key = "age";
alert( key in user ); // true,属性 "age" 存在
  • 为了遍历一个对象的所有键(key)可以使用一个特殊形式的循环:for..in,同python类似,格式为
    for (key in object) {
      // 对此对象属性中的每个键执行的代码
    }

    例如,

    let user = {
      name: "John",
      age: 30,
      isAdmin: true
    };
    
    for (let key in user) {
      // keys
      alert( key );  // name, age, isAdmin
      // 属性键的值
      alert( user[key] ); // John, 30, true
    }

    这里的key也可用其他名称代替

  • 遍历一个对象时属性的排序:整数键(像 "1", "41" 这样纯数字的键,+10和1.2这种不算)会按照升序排序,无论你写入对象的顺序如何;非整数键(如 "name", "hello")会按照插入顺序保留混合键:整数键先排序,非整数键按插入顺序排列。

    let codes = {
      "49": "Germany",
      "41": "Switzerland",
      "44": "Great Britain",
      // ..,
      "1": "USA"
    };
    
    for(let code in codes) {
      alert(code); // 1, 41, 44, 49
    }
    let codes = {
      "+49": "Germany",
      "+41": "Switzerland",
      "+44": "Great Britain",
      // ..,
      "+1": "USA"
    };
    
    for (let code in codes) {
      alert( +code ); // 49, 41, 44, 1
    }

    想保留严格排序可以用map代替object

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值