1生成方法

 

什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

 

var obj = {

  foo: 'Hello',

  bar: 'World'

};

 

 

什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

 

var obj = {

  foo: 'Hello',

  bar: 'World'

};

上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象内部包含两个键值对(又称为两个“成员”),第一个键值对是foo: 'Hello',其中foo是“键名”(成员的名称),字符串Hello是“键值”(成员的值)。键名与键值之间用冒号分隔。第二个键值对是bar: 'World',bar是键名,World是键值。两个键值对之间用逗号分隔。

 

 

对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。

 

var obj = {

  p: function (x) {

    return 2 * x;

  }

};

 

obj.p(1) // 2

 

 

2.表达式还是语句

对象采用大括号表示,这导致了一个问题:如果行首是一个大括号,它到底是表达式还是语句?

 

{ foo: 123 }

 

 

为了避免这种歧义,JavaScript 规定,如果行首是大括号,一律解释为语句(即代码块)。如果要解释为表达式(即对象),必须在大括号前加上圆括号。

 

({ foo: 123})

这种差异在eval语句(作用是对字符串求值)中反映得最明显。

 

eval('{foo: 123}') // 123

eval('({foo: 123})') // {foo: 123}

上面代码中,如果没有圆括号,eval将其理解为一个代码块;加上圆括号以后,就理解成一个对象。

 

 

3.属性的操作

读取属性

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。

 

var obj = {

  p: 'Hello World'

};

 

obj.p // "Hello World"

obj['p'] // "Hello World"

 

 

属性的赋值

点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值。

 

var obj = {};

 

obj.foo = 'Hello';

obj['bar'] = 'World';

 

 

查看所有属性

查看一个对象本身的所有属性,可以使用Object.keys方法。

 

var obj = {

  key1: 1,

  key2: 2

};

 

Object.keys(obj);

// ['key1', 'key2']

 

 

delete 命令

delete命令用于删除对象的属性,删除成功后返回true。

 

var obj = { p: 1 };

Object.keys(obj) // ["p"]

 

delete obj.p // true

obj.p // undefined

Object.keys(obj) // []

 

in 运算符

 

in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。

 

var obj = { p: 1 };

'p' in obj // true

 

 

for…in 循环

for...in循环用来遍历一个对象的全部属性。

 

var obj = {a: 1, b: 2, c: 3};

 

for (var i in obj) {

  console.log(obj[i]);

}

// 1

// 2

// 3

 

 

with 语句

with语句的格式如下:

 

with (对象) {

  语句;

}

它的作用是操作同一个对象的多个属性时,提供一些书写的方便。

 

// 例一

var obj = {

  p1: 1,

  p2: 2,

};

with (obj) {

  p1 = 4;

  p2 = 5;

}

// 等同于

obj.p1 = 4;

obj.p2 = 5;

posted on 2018-02-24 10:45  Sharpest  阅读(94)  评论(0)    收藏  举报