ES5
嚴格模式
- 定義方法
use strict
- 特性:
- 必須使用var定義變量
- 存在eval作用域
- 禁止自定義函數中的this指向window
- 對象不能有重名屬性
JSON對象
- json.stringify(obj/arr):js對象轉換為json對象
- json.parse(str):json對象轉換為js對象
Object拓展
Object.create(prototype,[descriptors])
- 作用:以指定對象為原型創建新對象
- descriptors參數
- value:指定值
- writeable:是否可修改
- configurable:是否可刪除
- enumerable:是否能用for in 遍歷
var test1 = {name : "test1",
}var test2 = {}test2 = Object.create(test1,{sex:{value : "boy",writable : true,configurable : true,enumerable : true,},age : {value : 18,}})
Arrey拓展
- indexOf():取得值在數組中的第一個下標
- lastIndexOf():取得值在數組中的最后一個下標
- forEach():遍歷數組
- map():返回加工后的數組
- filter():過濾數組
var arr = [1,2,3,,2,3,4,5,3,4,5,67,7,8,0]
var index_of = arr.indexOf(3)
console.log(index_of) // 2
var lastindex_of = arr.lastIndexOf(3)
console.log(lastindex_of)
// 無法使用break跳出遍歷
arr.forEach(function(v){console.log(v)
})
var arr2 = arr.map(function(v){return v + 1
})console.log(arr2)var arr3 = arr.filter(function(v){return v>2
})
console.log(arr3)
Call,apply,bind
- call():直接傳遞參數
- apply():以數組形式傳遞參數
- bind():直接傳遞參數,不會立即調用,返回函數
var fun = function(a,b){console.log(this)console.log(a+b)
}var fun1 = function(){var fun1_name = "fun1"
}fun.call(fun1,"aa","bb")
fun.apply(fun1,["aa","bb"])
// 不會立即調用
var fun3 = fun.bind(fun1,"aa","bb")
fun3()