《红宝书》 |什么是对象
什么是对象
对象是一组数据和功能的集合。
创建对象
通过new
操作符和Object
构造函数创建
let obj=new Object()
obj.width=100
obj.size="small"
通过字面量创建
let obj={
width:100,
size:"small"
}
存取属性
属性一般是通过点语法存取的:
let person={}
person.age=18 //存
person.age //取
此外也可以使用中括号,此时属性名要用字符串形式:
let person={}
person["age"]=18 //存
person["age"] //取
//对于点语法,属性名如果包含某些字符会报错;此时可使用中括号:
let person={}
person["first name"]="chen"
person["first name"]
实例通用的属性和方法
Object是所有对象的基类,所以所有Object实例都有如下属性和方法:
-
constructor
:用于创建当前对象的函数(构造函数),在上面例子中,obj
的constructor
属性值就是Object()
console.log(obj.constructor) //ƒ Object() { [native code] }
-
hasOwnProperty(propertyName)
:用于判断当前对象实例上是否存在给定的属性,属性名必须为字符串console.log(obj.hasOwnProperty('name')) //true console.log(obj.hasOwnProperty('age')) //false
-
isPrototypeof(object)
:用于判断当前对象是否为另一个对象的原型 -
propertyIsEnumerable(propertyName)
:用于判断给定的属性是否可以使用for-in
语句枚举,属性名必须为字符串。 -
toLocaleString()
:返回对象的字符串表示,该字符串反映对象所在的本地化执行环境console.log(obj.toLocaleString()) //"[object Object]"
-
toString()
:返回对象的字符串表示console.log(obj.toString()) //"[object Object]"
-
valueOf()
:返回对象对应的字符串、数值或字符串表示console.log(obj.valueOf()) //{id: 18, name: "hello", fun: ƒ}