最近接手前端的工作,對當前項目中自制的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({},'陶士涵');