定义
“无序属性的集合,其属性可以包含基本值、对象或者函数”。严格来说,这就是相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字 ,而每个名字都映射到一个值
创建对象
对象直接量
对象直接量是由若干键值对组成的映射表,键/值中间用冒号隔开,键值对之间用逗号隔开,整个映射表用花括号括起来。属性名可以是JavaScript标识符也可以是字符串直接量(特殊符号,数字,表情都可以);
let obj = {
"name":"Peter";
"@": "haha";
"1":123;
" ":34342;
"中文":"中文也可以"
}
//如果不是标识符的话必须用引号。
通过new创建对象
new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。这里的函数称为构造函数(constructor),构造函数用以初始化一个新创建的对象。
对象属性
对象属性的设置
object.prooerty//使用点运算来设置对象的属性
object['property']
object[property]//其中的property是变量,如果没有设置则我们不知道是什么。
第一种语法使用点运算和一个标识符(字符串),第二种语法使用方括号和一个字符串,看起来更像数组,只是这个数组通过字符串索引而不是数字索引。这种数组是我们所说的关联数组。
对象属性的删除
delete运算符 可以删除对象的属性。delete只是切断属性和宿主对象的联系,而不会操作属性。delete只能删除自身属性,不能删除继承属性也就是原型。返回布尔类型。
delete obj.name;//obj不再具有name属性
对象属性的查找
JavaScript对象可以看作属性的集合,我们经常会检测集合中的成员的所属关系。可以通过in运算符、hasOwnProperty和属性查询。
in运算符的左侧是属性名(字符串),右侧是对象。如果对象的自身属性或继承属性中包含这个属性则返回true。
let o = {"x":1};
"x" in o;// return true
"Y" in o;//return false
"toString" in o;//true,继承的原型
对象的hasOwnProperty()方法用来检测给定的名字是否是对象的属性。对于继承属性性他将返回false:
let o = {"x":1};
o.hasOwnProperty("x")//返回true
o.hasOwnProperty("y")//返回false
o.hasOwnProperty("toString")//false;
对象属性增加
在对象直接量中,属性名与属性值之间通过冒号分隔,冒号左侧是属性名,右侧是属性值,名值对(属性)之间通过逗号分隔。
在下面示例中,使用直接量方法定义对象 obj,然后添加了两个成员,一个是属性,另一个是方法。
var obj = {
x : 1,
y : function () {
return this.x + this.x;
}
}
通过点语法,可以在构造函数内或者对象外添加属性。
var obj = {};
obj.x = 1;
obj.y = function () {
return this.x + this.x;
}