1.对象的创建
字面量方式
var obj = {}
构造函数方式
var obj = new Object();
遍历对象中的属性for in
for(var key in obj){
console.log(obj[key]);
}
删除对象中的属性
delete.obj[name]
2.Object显示类型转换(强制类型转换)
1.Boolean(给定值转换为Boolean型)
string 非空字符串都会转为true 空字符串会转为false’
number 任何非0的数字(包括无穷大) 0和NaN
object 任何对象都会转为true(包括空对象) null会转为false
undefiend都会转为false
2.String
与隐式转换的规则类似,当对象要转为string时,先调用toString()方法,再调用valueOf()
3.Number
与隐式转换规则类似,当对象要转为Number时,先调用valueOf()方法,再调用toString()方法
3.检测属性(检测一个属性是否属于某个对象)
in 检测某个属性是否是自有属性或者继承属性
consoel.log(‘toString’ in obj)//true
Object.prototype.hasOwnProperty()检测某个属性是否是自有属性,对于继承属性返回false
console.log(obj.hasOwnProperty(‘toString’))//false
Object.prototype.propertyisEnumable() 检测某个属性是否是自身属性,还要求可枚举,就是我们创建的属性
console.log(obj.propertyisEnumable(‘toString’))//false
4.Object原型属性及方法
1.认识原型概念
每个Object的构造函数中都有一个prototype指向它的原型对象,而每个原型对象中都有
一个constructor指向它的构造函数,每个通过构造函数创建的实例都可以继承它们的构造函数
和原型对象的方法,每个实例中都有一个__proto__指向它的原型对象,这样构造出了一个简单
的原型链
2.Object原型中常用的方法
constructor
保存用户创建当前对象的函数,与原型对象对应的构造函数
hasOwnProperty
检测给定属性是否为自有属性
propertyisEnumable
检测给定属性不仅要是自有属性,还要是我们创建的属性
valueOf()
返回对象的字符串,数值,布尔值
toString()
返回对象的字符串表示
isPrototypeOf
检查传入对象的原型
a.isprototypeOf(b)
如果a是b的原型,则返回true
如果a不是b的原型,则返回false
注:obj.proto===obj.prototype //true
5.深入理解对象–定义属性(ECMAScript中有两种属性:数据属性,访问器属性)
数据属性特性:
Configurable:默认值为true 是否可以通过delete删除
Enumerable:默认值为true 是否可以通过for in 循环
Writeable:默认值为true 是否能修改属性的值
vale:属性的数据值
Object.denfineProperty(obj,‘name’{
})
多个属性的设置
Object.denfineProperties(obj,{
name:{
}
age:{
}
})
读取属性的特性
Object.getOwnPropertyDescriptor(obj,'name')
访问器属性:
这个属性不包含数据值,包含一对getset方法,当读写属性时就是通过这两个方法进行操作的
Configurable:默认false 是否可以通过delete删除
Enumerable:默认false 是否可以通过forin循环
Get:默认undefined 读取属性时调用
Set:默认undefined 写入属性时调用