紅寶書總結-this,length,apply,call

_會笑的鸚鵡_發表於2019-05-07
  • this 引用的是函式執行的環境物件
window.color = "red";
var o = {color:"blue"};

function sayColor(){
    alert(this.color);
}

sayColor();//"red"

o.sayColor = sayColor;
o.sayColor();//"blue"
複製程式碼
  • length:每個函式都包含兩個屬性:length和prototype,其中,length屬性表示函式希望接收的命名引數的個數(不是實際接收的)
function sayName(name){
    alert(name);
}

function sum(num1, num2){
    return num1 + num2;
}

function sayHi(){
    alert("hi");
}

alert(sayName.length);//1
alert(sum.length);//2
alert(sayHi.length);//0
複製程式碼
  • 每個函式都包含兩個非繼承而來的方法:apply()和call()。這兩個方法的用途都是在特定的作用域中呼叫函式,實際上等於設定函式體內this物件的值。

apply

  • 第一引數為執行函式的作用域(物件),另一個是引數陣列,如Array例項或arguments物件

call

  • 與apply的區別是:除了第一個都是函式作用域,其餘引數都必須逐個列舉出來

es5還定義了一個bind函式,這個方法會建立一個函式的例項,其this值會被繫結到傳給bind()函式的值。

相關文章