JS对象的基本用法

作者: cy_Wey | 来源:发表于2022-07-10 11:10 被阅读0次

    对象是复杂数据类型,定义了无序键值对的集合

    一、声明对象

    let obj = {'name' = 'Jack', 'age' = 18}
    
    let obj = new object({'name' = 'Jack', 'age' = 18})
    
    • 键名是字符串,不是标识符,可以包含任何字符
    • 引号可以省略,省略之后只能写标识符了,就算引号省略了,键名仍是字符串
    • 对象没有数字下标
    var a = 'xxx'
    var obj = {
        [a] = 111  // 此时a为变量,a的值为xxx
    }
    
    • 不加 [ ] 属性名会自动变成字符串
    • 加了 [ ] 则会当做变量求值,值如果不是字符串则会自动变成字符串

    二、删除对象属性

    delect obj.name 删除属性名和值
    obj.name = undefined 删除属性值

    name in obj && name === undefined 判断含有属性名,但值为undefined
    注意 name === undefined 不能判定 name 是否为 obj 的属性

    三、查看对象属性

    Object.key(obj) 查看对象的所有属性名
    Object.values(obj) 查看对象的所有属性值
    Object.entries(obj) 查看对象的所有属性名和属性值
    console.dir(obj) 查看共有属性和自身属性

    name in obj 判断属性名是否存在,不会区分自身属性和共有属性
    obj.hasOwnProperty('name') 判断对象自身拥有的属性,不包含共有属性

    四、修改或增加对象的属性

    属性存在则修改,没有则增加
    批量赋值,ES6 新出
    Object.assign(obj, {p1 = 1, p2 = 2, p3 = 3})

    • 无法通过自身修改或增加共有属性

    • 一般来说不要修改原型
      推荐使用 Object.create 修改对象的原型,要改就开始就改,别后来再改

    • 不推荐使用 obj.__proto__ 修改对象原型的属性
      obj.__proto__['toString'] = 'xxx'
      推荐使用 obj.prototype 修改对象原型的属性
      obj.prototype['toString'] = 'xxx'

    五、原型

    • 隐藏属性存了所有对象的共有属性的地址,这个共有属性组成的象叫做原型

    • 原型的作用是为了省内存

    • 每一个对象都有原型

    • __proto__ === null 人为指定原型为 null

    • obj = { } 的原型即为所有对象的原型,这个原型包含所有对象的共有属性,是对象的根,这个原型也有原型,是 null

    • 中括号语法 obj['key'],优先使用这种

    • 点语法 obj.key

    • 坑新人的写法 obj[key]
      obj[console.log(name)] 是 undefined
      obj.name等价于obj['name'],不等价于obj[name]obj.name中的 name 是字符串,而不是变量


    资料来源:饥人谷

    相关文章

      网友评论

        本文标题:JS对象的基本用法

        本文链接:https://www.haomeiwen.com/subject/iprwbrtx.html