最近接手前端的工做,對當前項目中自制的js框架下,js的使用產生了很是多的困惑.尤爲是js的類,對象,函數,this等等相互之間的關係和轉換,之前學過也忘得差很少了,如今基本至關於從新看.前端
js中的函數有能夠有好幾種解釋,普通函數,類,一個對象.三個關係都是能夠當作是共存的.框架
function user(){};//定義一個函數 console.log(user);//1.這個時候是普通函數 var u=new user(); console.log(u);//2.這個時候是當作user類 user.toString();//3.這個時候user是做爲對象的
Function是個函數對象,也能夠認爲是個類,全部定義的函數都是Function類的對象,我定義的user也是對象,而且能夠調用Function裏面的方法
user.call(xxx);當我使用user調用call方法時,他是做爲對象來使用,調用的是Function類裏面的call方法,這個方法的做用是調用這個函數而且把傳遞進去的參數覆蓋函數裏面的this .第一個參數是覆蓋函數裏面的this , 剩下的參數是做爲這個函數的參數傳進去函數
function user(name){
console.log('我被調用了,this被覆蓋了',this,',參數傳進來了',name);
};
user.call({},'陶士涵');this