版本認識
- ECMA Script(ECMA組織制定)是規範,JavaScript是實現。
- ES5(2009)、ES6(2015)、ES7(2016)
- IE瀏覽器對ES5存在部分支持問題。
一.嚴格模式(‘use strict’):使得Javascript在更嚴格的語法條件下運行
- 變量:聲明必須使用var
- 對象:屬性不能重複
- 函數:自定義函數this不能指向window對象、爲eval函數添加作用域
二.json:存儲和交換文本信息的語法
- json.stringFy():javascript對象/數組轉json文本。
- json.parse():json文本轉javascript對象/數組。
三.Object擴展
- 1.Object.create(prototype, [descriptors]):以指定對象爲原型創建新的對象
var obj = {firstName:"張",lastName:'三'};
var newObj = null;
newObj = Object.create(obj,{
sex:{
value:"男",
writable:true,
configurable:true,
enumerable:true
}
});
- 2.Object.defineProperties(object, descriptors):爲指定對象擴展多個屬性
var strongObj = {
firstName:"張",
lastName:'三',
get fullName(){
return this.firstName+this.lastName;
},
set fullName(name){
var arr = name.split("");
this.firstName = arr[0];
this.lastName = arr[1];
}
};
var obj = {firstName:"張",lastName:'三'};
var strongObj1 = {firstName:"張",lastName:'三'};
Object.defineProperties(strongObj1,{
fullName:{
get:function(){
return this.firstName+this.lastName;
},
set:function(name){
var arr = name.split("");
this.firstName = arr[0];
this.lastName = arr[1];
}
}
});
四.Array擴展
- 索引:Array.prototype.indexOf/ lastIndexOf (value)
- 遍歷:Array.prototype.forEach(function(item, index){})
- 映射:Array.prototype.map(function(item, index){})
- 過濾:Array.prototype.filter(function(item, index){})
var arr = [6,2,4,6,1,6];
console.log(arr.indexOf(6),arr.lastIndexOf(6));
arr.forEach(function(item){console.log(item)});
console.log(arr.map(function(item){return item+10}));
console.log(arr.filter(function(item){return item>4}));
五.Function擴展
- Function.prototype.bind(obj):將函數內的this綁定爲obj, 並將函數返回
- 區別bind、call和apply:從 是否立即執行、傳參方式來區分
function fn(param){
console.log(this,param);
}
var obj = {name:"張三"};
fn("param");
fn.call(obj,"call_param");
fn.apply(obj,["apply_param"]);
fn.bind(obj,"bind_param")();//不會立即執行,常用在回調函數。