Object类型
1. 实例化对象
所有其他对象都继承Object。
创建object实例的方式有两种:
- 第一个种是使用new操作符后跟Object构造函数
var person = new Object()
注意:O是大写
- 第二种是使用对象字面量:
var person = {
name: 'tg'
};
访问对象属性使用的是点表示法,也可以用方括号表示法来访问。
var person = {
name: 'tg'
};
console.log(person.name); // "tg"
console.log(person['name']); // "tg"
注意:如果对象属性名是不符合语法的或属性名是关键字或保留字,只能使用方括号表示法。例如:
var person = {
"1a" : 1
};
person["1a"]; // 1
person.1a // 会报错
2、给对象添加方法
我们可以像添加属性一样给对象添加方法:
var o = {};
o.test = function(){
console.log(1);
}
o.test(); //1
3、Object对象的静态方法
3.1 Object.keys()、Object.getOwnPropertyNames()
Object.keys()
方法和
Object.getOwnPropertyNames()
方法一般用来遍历对象的属性,它们的参数都是一个对象,返回一个数组,该数组的项都是对象自身的(不是继续原型的)的所有属性名。两者的区别在于,
Object.keys()
只返回可枚举的属性,
Object.getOwnPropertyNames()
方法还返回不可枚举的属性名。
var arr = ['a', 'b'];
console.log(Object.keys(arr)); // ["0", "1"]
console.log(Object.getOwnPropertyNames(arr)); // ["0", "1", "length"]
数组的length属性是不可枚举的。
4、Object对象的实例方法
valueOf():返回当前对象对应的值,默认情况下返回对象本身。
toString():返回当前对象对应的字符串形式。
toLocaleString():返回当前对象对应的本地字符串形式。
hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 如果是自身的属性,返回true,否则返回false。
isPrototypeOf():判断当前对象是否为另一个对象的原型。如果是,返回true,否则返回false。
propertyIsEnumerable():判断某个属性是否可枚举。
(1)valueOf()
valueOf()
方法返回当前对象对应的值,默认情况下返回对象本身。
var o = {
name: 'tg',
age: 24
};
console.log(o == o.valueOf()); // true
(2)toString()
toString()
返回当前对象对应的字符串形式。
var o = {
name: 'tg',
age: 24
};
console.log(o.toString()); // "[object Object]"
(3)hasOwnProperty()
hasOwnProperty()
判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 如果是自身的属性,返回true,否则返回false。
var o = {
name: 'tg',
age: 24
};
console.log(o.hasOwnProperty('name')); // true
console.log(o.hasOwnProperty('toString')); // false
toString()方法是继承原型的,所以返回后false。
(4)isPrototypeOf()
isPrototypeOf()
方法判断当前对象是否为另一个对象的原型。如果是,返回true,否则返回false。
function Test(){}
var t = new Test();
console.log(Test.prototype.isPrototypeOf(t)); // true