## 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開發技巧合集
- 編程風格
- 垃圾回收機制