前言
在平时工作中,我们看到的引用类型大多数是Object类型的实例。
什么是Object类型?
如下所示:
var o = new Object();
Object类型是一种数据类型,是所有它的实例的基础。通俗的讲,它就是一个对象,有很多基本的属性供使用它的实例使用,并且可以添加新的属性。
object的实例有哪些共有的属性呢?
- 构造函数(constructor),它保存着用于创建当前对象的函数。
- hasOwnProperty(propertyName),用于检测给定的属性在不在当前的实例中(不是原型中)。
- isPrototypeOf,用于检测对象是否是当前对象的原型。
- propertyIsEnumerable(propertyName),用于检测给定的属性是否能够使用for-in语句来枚举。
- toLocaleString,返回对象的字符串表示。
- toString,返回对象的字符串表示。
- valueOf,返回对象的字符串、数值、布尔值。
如何创建Object类型?
- 使用new操作符与Object构造函数:
var person1 = new Object();
person1.name = '对象1';
person1.age = 18
- 对象字面量表示法:
var person2 = {
name: '对象2',
age: 18
};
第一种方法使用new操作符和Object构造函数创建了Object引用类型的一个新实例,然后把该实例保存在了变量person1中。
第二种方法则是用一种简写的方式,通常使用对象字面量表示法比较频繁,因为它会给人封装数据的感觉,同时它也是向函数传递大量可选参数的首选方式。
实际上:
var person2 = {}; // 与new Object()相同
函数传参:
function test(args) {
var result = '';
if (typeof args.name === 'string') {
result += 'Name:' + args.name + '\n';
}
if (typeof args.age === 'number') {
result += 'Age:' + args.age + '\n';
}
console.log(result);
}
test({
name: '测试1',
age: 18
});
test({
name: '测试2'
});
Object对象属性访问方式
var o = {
name: '测试',
age: 18
};
console.log(o.name);
console.log(o['name']);
var key = 'name';
console.log(o[key]);
访问对象的属性一般是用点表示法比较多,同时也可以使用方括号表示法来访问,记住方括号里面的属性名要以字符串放入就行。通常不是必须使用变量来访问的属性,一般推荐用点表示法来访问。
Object类型检测方法
var o = new Object();
console.log(o instanceof Object)
instanceof关键字,可以检测出该对象是否是Object类型。有人会问typeof不是也可以吗?是的,确实也可以检测出来,但是typeof null和typeof [] 得到的也是object,所以是不建议这么使用的,因为它不够精准啊大兄弟。