標准內置對象
-
構造器對象
Object Boolean String Number Function Array RegExp Date Error
-
其他對象
Math Json 全局對象
1. Object

實例化對象的方法
var obj = {'name': mary, age: 24};
Object構造器沒有實例對象屬性和方法
Object.creat
-- 基於原型對象創建新對象
var proto = {a:1, b:2};
var obj = Object.creat(proto);
Object.prototype.toString
--獲取方法調用者標准類型
var obj = new Object(); obj.toString(); // "[object Object]"
Object.prototype.hasOwnProperty
--判斷一個屬性是否是對象自身屬性
var obj = {a:1, b:2};
obj.c = 3;
obj.hasOwnProperty("c"); // true
obj.hasOwnProperty("a"); // false
2. String, Number, Boolean
Boolean

其他類型向布爾值轉換
數字: 0, NaN->false
字符串: ""->false
undefined->false
null->false
對象->true
String
字符串的使用

String.prototype.indexOf
--獲取子字符串在字符串中的索引位置( 不存在則返回-1 )

String.prototype.replace
查找字符串替換成目標字符

這里用到了正則表達式.
String.prototype.split
--按分割符將字符串分割成字符串數組

Number
Number.prototype.toFixed
--將Num四舍五入為指定小數位數的數字

3. Array
數組的創建
var arr = [1, "a", true, function(){}];
var arr = new Array(1, "a", true, function(){});
- 構造器對象屬性, 方法
-- prototype, isArray
- 原型對象屬性, 方法
-- constructor, splice, forEach, find, concat, pop, push, reverse, shift, slice...
- 實例對象屬性, 方法
-- length
Array.prototype.splice
-- 從數組中添加或刪除元素, 返回被刪除的元素列表

Array.prototype.splice
-- 遍歷數組元素並調用回調函數

得到結果依次是: 2 true 5 true 9 true
跳過了空元素.
4. function
實例化函數方法

Function.prototype.apply
-- 通過參數去指定函數的調用者以及函數參數, 然后執行該函數
function Point(x, y) { this.x = x; this.y = y; } Point.prototype.move = function(x, y){ this.x += x; this.y += y; } var p = new Point(0, 0); p.move(2, 2); // 移動到點2 var circle = {x: 1, y: 1, r: 1}; p.move.apply(circle, [2, 1]); //{x: 3, y: 2, r: 1}

Function.prototype.bind
-- 同樣是指定函數調用者和函數參數, 但要返回這個函數應引用
在上述代碼基礎上做如下修改:
var circlemove = p.move.bind(circle, 2, 1); setTimeout(circlemove, 1000); //設置定時器, 讓圓1s之后移動
自定義對象構造器

子類構造器

函數調用方式
- ()
- apply, call
函數參數
- 形參與實參個數不一定相等
- 值傳遞
- 通過參數類型來檢查實現函數重載
argument

比較不定數量的數字大小並返回大數:
function max() { var _max = arguments[0]; for(i =0; i < arguments.length; i++) { if(_max < arguments[i] { _max = arguments[i]; } } return _max; }
值傳遞

function plus(num) { return ++num; } var count = 10; var ret = plus(count);
結果: ret === 11; count === 10;
function setname(obj) { obj.name = "obama"; } var president = {name: "bush"}; setname(president);
此時obj 與 president 指向同一個堆對象, obj復制的只是棧對象中的地址, 因此結果為: {name: "obama"}.
函數重載

5. RegExp, Date, Error
RegExp
定義方法
-- /pattern/flags
-- new RegExp(pattern[, flags]);
test() 方法
-- 使用正則表達式對字符串進行測試,並返回測試結果
var reg = /^abc/i; // 以abc開頭,忽略大小寫 reg.test("Abc123"); // true reg.test("ferabc"); // false
Date
定義方法
var date = new Date(); var date = new Date(2018, 3, 10, 7 , 1, 1, 100);
6. Math, JSON
Math
對象方法
// floor: 向下取整 Math.floor(0.97); // 0 Math.floor(-5.1); // -6 // ceil: 向上取整 Math.ceil(1.2); // 2 // round: 四舍五入 Math.round(3.4); // 3 // random: 取隨機數, 返回0~1之間的浮點數 Math.random(); //0.4534623634643 Math.random(); //0.2048253468450
JSON
-- 用於存儲和交換文本信息
JSON.stringify
-- 將json對象序列化成字符串
var json = {1:1, 2:'2', 3:{4:4, 5:{6:6}}}; JSON.stringify(json); // '{"1":1, "2":"2", "3":{"4":"4", "5":{"6":6}}};'
JSON.parse
-- 將json字符串轉換成json對象

7. 全局對象
-
.非數字值 NaN
-- 表示錯誤或無意義的運算結果
-- NaN參與運算返回仍然是NaN
-- NaN不等於任何值,包括其本身
-- 可以用isNaN()判斷運算結果是否為NaN
-
parseInt
--將字符串轉化為數字

-
encodedURIComponent
-- 用於將URI參數中的中文,特殊字符等作為URI的一部分進行編碼
var url = "http: //www.163.com/reg.html?name=" + encodedURIcomponent(name);

