JS 基本语法

197 阅读3分钟

1. 声明对象的两种语法

第一种;
let obj = { name: "frank", age: 18 };
第二种;
let obj = new Object({ name: "frank" });

1.1 属性带引号和不带引号的写法

  1. 引号可以省略,省略之后只能用标识符的写法(全数字除外)
  2. 就算引号省略了,键名也是字符串。
  3. 当有空格和特殊字符时必须加引号。
  4. 没有数字键名和数字下标,因为浏览器会自动将数字转换为字符串。 注意一个细节: 对象的 key 一直、永远都是字符串!键名是字符串!键名是字符串! 标识符是变量的合法命名。可以是任意 Unicode 字母(中文、英文、希腊字母)、下划线_、$符号,不可以数字开头。

1.2 键名是数字

var obj = {
  1: 'a',
  3.2: 'b',
  1e2: true,
  1e-2: true,
  .234: true,
  0xFF: true
};

obj
// Object {
//   1: "a",
//   3.2: "b",
//   100: true,
//   0.01: true,
//   0.234: true,
//   255: true
// }

//查看所有keys**
Object.keys(obj)

obj['100'] // true

如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。

1.3 变量作键名

let p1 = 'name'
let obj = {[p1]:'frank'}  //这样写属性名为'name'

  1. 不加 [] 的键名会自动变成字符串;
  2. 加了 [] 的键名会被当做变量求值
  3. 值如果不是字符串,则会自动变成字符串

2.如何删除对象的属性

detele obj.xxx 或者 delete obj['xxx']

3.如何查看对象的属性

3.1 查看所有属性

3.1.1 查看自身所有属性

Object.keys(obj)

3.1.2 查看自身+共有属性

console.dir(obj)

3.1.3 判断一个属性是自身的还有共有的

obj.hasOwnProperty('toString')

3.1.4 key in obj 和 obj.hasOwnProperty('toString')的区别

key in obj 不能判断出这个属性是自身属性还是共有属性obj.hasOwnProperty('key') 可以判断出这个属性是自身属性还是共有属性

3.2 查看单独一个属性

obj.name 等价于 obj["name"] 对象的键名都是字符串!obj[变量名]

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

改自身 obj['name'] = 'bob'批量改自己 Object.assign(obj, {age: 18})改原型:let obj = Object.create(common)

5.总结

5.1 删

  1. delete obj.xxx 或者 delete obj['xxx']
  2. 通过设置 obj['xxx']=undifined,不能够删除属性

判断对象是否存在属性

  1. 不含属性名
'xxx' in obj  => false

//可判断属性'xxx'是否存在对象obj中
  1. 含有属性名,但是值为 undefined
'xxx' in obj && obj.xxx === undefined

5.2 查

  1. 查看属性
obj['key']
obj.key
obj[key] //其中key是变量
<a name="y83AJ"></a>
  1. 查看自身所有属性
Object.keys(obj)
  1. 查看自身属性 + 共有属性
console.dir(obj)
  1. 判断属性是自身还是共有
obj.hasOwnProperty('toString')
  1. hasOwnProperty 和 'xx' in obj 的区别
'xx' in obj  //只能判断'xx'是否是obj的属性(比hasOwnProperty范围广)。
obj.hasOwnProperty('xx') //判断'xx'是自身属性还是原型中的属性

5.3 改

改自身 obj['name'] = 'jack'批量改自身 Object.assign(obj, {age:18, ...})改原型 let obj = Object.create(common)

5.4 原型

每个对象都有原型

原型里面存放着对象的共有属性对象的原型也是对象, 说明这个原型也是所有对象的原型 这个原型也有原型,是 null