## 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
```
- 前言
- JavaScript简介
- 基本概念
- 语法
- 数据类型
- 运算符
- 表达式
- 语句
- 对象
- 数组
- 函数
- 引用类型(对象)
- Object对象
- Array对象
- Date对象
- RegExp对象
- 基本包装类型(Boolean、Number、String)
- 单体内置对象(Global、Math)
- console对象
- DOM
- DOM-属性和CSS
- BOM
- Event 事件
- 正则表达式
- JSON
- AJAX
- 表单和富文本编辑器
- 表单
- 富文本编辑器
- canvas
- 离线应用
- 客户端存储(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 检测设备方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向对象的程序设计
- 概述
- this关键字
- 原型链
- 作用域
- 常用API合集
- SVG
- 错误处理机制
- JavaScript开发技巧合集
- 编程风格
- 垃圾回收机制