文章目錄
- ES6總結
- var,let,const的區別
- 箭頭函式和function的區別
- 結構賦值
- 原型
- 原型鏈
- 繼承
- 1.原型鏈繼承
- 2.建構式繼承
- 3.組合式繼承
- 4.class類繼承
- Promise
ES6總結
var,let,const的區別
1.var 變數可以提升,let,const變數不可以提升
2.var 沒有暫時性死區,let,const有暫時性死區
3.var 允許重復宣告,let,const不可以重復宣告
4.var 和let可以修改宣告的變數,const不可以修改
5.var 沒有塊級作用域,let和const有塊級作用域
箭頭函式和function的區別
1.箭頭函式是匿名函式,不能作為建構式,不能使用new
2.箭頭函式內沒有arguments,可以用展開運算子...解決
3.箭頭函式的this,始終指向父級背景關系(箭頭函式的this取決于定義位置父級的背景關系,跟使用位置沒關系,普通函式this指向呼叫的那個物件)
4.箭頭函式不能通過call() 、 apply() 、bind()方法直接修改它的this指向,(call、aaply、bind會默認忽略第一個引數,但是可以正常傳參)
5.箭頭函式沒有原型屬性
結構賦值
1 結構賦值就是從物件或陣列中提取值,吧右邊的值賦給左邊
2 分為資料結構,物件結構,結構賦值,結構物件,從方法中回傳
原型
實體化物件和原型的constructor指向建構式
建構式的prototype屬性指向原型物件
實體化物件的__proto__屬性指向原型物件
JavaScript里面每個物件都有一個__paoto__屬性,這個屬性就是他的原型
每個方法里面都有一個prototype屬性,也是他的原型
原型鏈
實體化物件的__proto__指向建構式的prototype
建構式prototype的__proto__指向Object.prototype
Object.prototype的__proto__指向null
繼承
1.原型鏈繼承
父類的實體做為子類的原型
function Fu(){
this.arr=['red','blue','green']
}
function Zi(){}
Zi.prototype=new Fu();
var a=new Zi
a.arr.push('black')
2.建構式繼承
在子類內,使用call呼叫父類方法,并將父類的this修改為子類的this,相當于是吧父類的實體屬性復制了一份放到子類的函式內
function Fu(){
this.arr=['red','blue','green'];
}
function Zi(){
Fu.call(this);
}
var a=new Zi();
a.arr.push('black')
console.log(a.arr)
3.組合式繼承
既能呼叫父類實體屬性,又能呼叫父類原型屬性
function Fu(name){
this.name=name;
this.arr=['red','blue','green'];
}
Fu.prototype.say=function(){
console.log(this.name)
}
function Zi(name,age){
Fu.call(this,name);
this.age=age;
}
Zi.prototype=new Fu();
var a=new Zi('black',21,'女')
a.say()//成功繼承
4.class類繼承
相當于es5中建構式
class中定義方法時,前后不能加function,全部定義在class的protopyte屬性中
class中定義的所有方法是不可列舉的
class中只能定義方法,不能定義物件,變數等
class和方法內默認都是嚴格模式
es5中constructor為隱式屬性
class Fu(){
constructor(name){
this.name=name
}
say(){
console.log(this.name)
}
}
class Zi extends Fu{
constructor(name,age){
super(name)
this.age=age
}
say(){super.say()}
}
var a=new Zi('張三')
a.say()
Promise
1.概述:Promise是異步編程的一種解決方案,從語法上講,Promise是一個物件,可以獲取異步操作的訊息
2.目的: (1)、避免回呼地獄的問題(2)、Promise物件提供了簡潔的API,使得控制異步操作更加容易
3.Promise有三種狀態:pendding //正在請求,rejected //失敗,resolved //成功
4.基礎用法:new Promise(function(resolve,reject){ })
resolved,rejected函式:在異步事件狀態pendding->resolved回呼成功時,通過呼叫resolved函式回傳結果;當異步操作失敗時,回呼叫rejected函式顯示錯誤資訊
$(function(){
// 封裝一個promise;將url提取出來;
var p = function(url){
return new Promise(function(resolve,reject){
$.get(url,function(data){
resolve(data);
})
})
}
Promise.all([
p("https://cnodejs.org/api/v1/topics?tab=good"),
p("https://cnodejs.org/api/v1/topics?tab=share"),
]).then(function(result){
console.log(result);
})
})