要努力啊小汤!
当你的才华还不足以撑起你的野心时,你应该静下心学习!!!

对象(object):键值对的集合

  1. 键值对:【属性:值】
                   变量:值========属性一般是变量
                   方法:函数======如果值为函数,属性就是方法
    var obj = {
      p: function (x) {
        return 2 * x;
      }
    };
    
    obj.p(1) // 2

    对象o1的属性foo指向对象o2,就可以链式引用o2的属性
    var o1 = {};
    var o2 = { bar: 'hello' };
    
    o1.foo = o2;
    o1.foo.bar // "hello"
  2. 对象的引用:
    指向同一个内存地址
    var o1 = {};
    var o2 = o1;
    
    o1.a = 1;
    o2.a // 1
    
    o2.b = 2;
    o1.b // 2

     指向同一个对象,o1的值改变不会对o2产生影响,o2还是纸箱原来的对象

    var o1 = {};
    var o2 = o1;
    
    o1 = 1;
    o2 // {}

     指向同一个原始的值,变量都是值的拷贝

    var x = 1;
    var y = x;
    
    x = 2;
    y // 1
  3. 属性的操作:【读取+赋值】
    属性的读取:一种是使用点运算符,还有一种是使用方括号运算符。

     

     方括号:
              数字键可以不加引号会自动转为字符串;
              运算符内部可以使用表达式;

  4. 属性的查看方法:object.keys();
  5. 属性的删除:delete一个不存在的数,不报错,返回的true
  6. 属性是否存在:in运算符
    无法识别哪些是继承的属性,哪些是自身的属性;

  7. 属性的遍历:for..in
    var obj = {a: 1, b: 2, c: 3};
    
    for (var i in obj) {
      console.log('键名:', i);
      console.log('键值:', obj[i]);
    }
    // 键名: a
    // 键值: 1
    // 键名: b
    // 键值: 2
    // 键名: c
    // 键值: 3

     

    for...in循环有两个使用注意点。

    • 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性(如toString)。
    • 它不仅遍历对象自身的属性,还遍历继承的属性。
      var person = { name: '老张' };
      
      for (var key in person) {
        if (person.hasOwnProperty(key)) {
          console.log(key);
        }
      }
      // name

       

  8. with语句:操作同一个对象的多个属性(最好不用,绑定的对象不明确)
    定义变量后才能使用;
    // 例一
    var obj = {
      p1: 1,
      p2: 2,
    };
    with (obj) {
      p1 = 4;
      p2 = 5;
    }
    // 等同于
    obj.p1 = 4;
    obj.p2 = 5;

     

posted on 2020-10-28 09:35  做一个有趣的妞儿  阅读(871)  评论(0)    收藏  举报