一、callee屬性 和 caller屬性。數組
區別:二者的調用對象不一樣app
arguments.callee:指向擁有這個arguments對象的函數,在遞歸運算中常常用到。函數
functionName.caller:在函數中經過函數名來調用,這個屬性中保存着調用當前函數的函數引用。functionName也可使用arguments.callee來代替 。 學習
function out(){ console.log(arguments.callee); } out(); // ƒ out(){console.log(arguments.callee);}
function out(){ inner(); } function inner(){ console.log(arguments.callee.caller) } out(); // ƒ out(){inner();}
二、arguments.length 和 function.lengththis
區別:很明顯,調用這個屬性的對象不一樣。arguments.length表示調用函數時實際傳遞的參數個數,有可能與函數定義時設置的參數個數不一樣。function.length表示函數但願接收的參數個數即定義函數時聲明的形參的個數。spa
function test(a,b){ console.log('arguments.length = '+arguments.length); console.log('函數test.length = '+test.length); } test(1,2,3,4); // arguments.length = 4, 函數test.length = 2
三、在ECMAscript5中,prototype屬性時不可枚舉的,所以使用for-in沒法獲取該屬性的值。prototype
四、apply方法和call方法code
這兩個方法的用途都是在特定的做用域中調用函數,實際上等於設置函數體this對象的值。對象
區別:主要是除了第一個參數以外的其餘參數類型不一樣。apply接收arguments對象和數組,call只能逐個傳入參數。blog
function sum(num1,num2){ return num1 + num2; } function callSum1(num1,num2){ return sum.apply(this,arguments); // 傳入arguments對象 } function callSum2(num1,num2){ return sum.apply(this,[num1,num2]); // 傳入數組 } function callSum3(num1,num2){ return sum.call(this,num1,num2); //逐個列舉參數 } console.log(callSum1(10,10)); //20 console.log(callSum2(10,10)); //20 console.log(callSum3(10,10)); //20
五、typeof 和 instanceof
這兩個操做符均可以用來檢測類型,可是typeof只能檢測基本數據類型,好比:字符串、數值、布爾值、undefined等,若是變量是一個對象或者null,使用typeof只會返回「object」。
使用instanceof能夠知道檢測的值是什麼類型的對象。
var num = 1; var str = 'hello'; var b = true; var u; var n = null; var arr = [1,2,3]; console.log(typeof num); //number console.log(typeof str); // string console.log(typeof b); // boolean console.log(typeof u); // undefined console.log(typeof n); // object console.log(typeof arr); // object console.log(arr instanceof Array); // true
六、document.documentElement.scrollTop 和 document.body.scrollTop
頁面具備 DTD(或者說指定了 DOCTYPE)時,使用 document.documentElement。
頁面不具備 DTD(或者說沒有指定了 DOCTYPE)時,使用 document.body。
爲了兼容,可使用以下代碼:
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
不斷學習,不斷完善中~~~