JS 对象基本用法

103 阅读1分钟

声明对象的两种语法

写法

let obj ={'name':'frank','age':18}

let obj = new Objec({'name':'frank'})

细节

  • 键名是字符串,不是标识符,可以包含任意字符
  • 引号可省略,省略之后就只能写标识符
  • 就算引号省略了,键名也还是字符串(重要)

删除对象的属性

  1. 删除 obj 的 xxx 属性
  • delete obj.xxx 或 delete obj['xxx']
  1. 不含属性名
  • 'xxx' in obj ==fasle
  1. 含有属性名,但是值为 undefined
  • 'xxx' in obj && obj.xxx === undefined
  1. 不能断定'xxx'是否为 obj 的属性
  • obj.xxx === undefined

查看对象的属性

  1. 查看自身所有属性
  • Object.keys(obj)
  1. 查看自身+共有属性
  • console.dir(obj)
  1. 查看自身单个属性
  • obj['name']
  • obj.name //这里name是字符串
  • obj[name] //这里name是变量

如何修改或增加对象的属性

  1. 改自身
  • obj['name']='jack'
  1. 批量改自身
  • Object.assign(obj,{age:18,...})
  1. 改共有属性
  • obj.proto['toString']='xxx'
  • Object.prototype['toString']='xxx'
  1. 改原型
  • obj.proto=common
  • let obj =Object.create(common) 注:所有的__proto__代码都是强烈不推荐写的
  • 基本同上:已有属性则改,没有属性则增

'name' in obj和obj.hasOwnProperty('name') 的区别

  • //使用in判断对象中是否由属性时,若自身没有,在原型中找到也是返回true
  • //使用hasOwnproperty()判断对象是否含有属性时,只有自身有才返回true example:
    var obj={age:18}
    obj.__proto__['name']='xxx'
    'name' in obj //true
    obj.hasOwnProperty('name') //fasle