1.arguments.calleejavascript
//經典的階乘(遞歸)函數 function factorial(num) { if (num <= 1) { return 1; } else { return num * factorial(num - 1); } } //消除函數名的耦合現象 function factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1);//函數內部屬性 [callee] } } var trueFactorial = factorial; factorial = function () { return 0; }; alert(trueFactorial(5));//120 使用callee屬性 接觸函數名耦合狀態 能夠繼續使用遞歸 不然返回0 alert(factorial(5)); //0
2.Length:表示函數但願接收的命名參數的個數java
3.prototype:在建立自定義引用類型以及實現繼承時,該屬性的做用極爲重要,該屬性不可枚舉,所以使用for-in 沒法發現數組
方法:app
1.apply()和call()函數
用途:在特定的做用域中調用函數,等於設置函數體內this對象的值this
function sum(num1, num2) { return num1 + num2; } function callSum(num1, num2) { return sum.call(this, num1, num2);//明確傳入每個參數 } function callSum1(num1, num2) { return sum.apply(this, arguments);//傳入arguments對象 } function callSum2(num1, num2) { return sum.apply(this, [num1, num2]);//傳入數組 } alert(callSum1(10, 10));//20 alert(callSum2(10, 10));//20
2.bind():建立一個函數的實例,其this的值會被綁定到傳給bind()函數的值spa
window.color = "red";
var o = { color: "blue" };
function sayColor() {
alert(this.color);
}
var objectSayColor=sayColor.bind(o);
objectSayColor();//blue;