這些題目是做完筆試之后,在別的地方找到的,現在附上。
1.(1)這題考察的怎么把參數轉換為數組,然后再截取你想要的位數。
function C(){ var a_args=Array.prototype.slice.call(argumens,0,2); var b_args=Array.prototype.slice.call(arguments,2); A.apply(this,a_args); B.apply(this,b_args); }
在函數內部,arguments和this是兩個特殊的對象,其中arguments是一個類數組對象,包含了傳入函數中所有參數,可能有的小伙伴會說為何不直接用arguments.slice(0,2);arguments.slice(2).原因是:雖然arguments是個類數組對象,並擁有length屬性,但是沒有數組的其他方法,它並不是一個真正的數組,可以用(arguments instance of Array )來驗證,所以不能直接用slice方法,必須用Array.prototype.slice.call轉換成真正的數組。才能調用slice方法,否則會報錯的。
(2)另外還可以用到ES6函數擴展中rest參數,
function C(...s){ A.call(this,s[0],s[1]); B.call(this,s.slice(2)); } function C(...s){ A.apply(this,s.slice(0,2)); B.apply(this,s.slice(2)); } function C(){ A(arguments[0],arguments[1]); B(Array.prototype.slice.call(arguments,2)); } 這幾種方法都是ok的
2.這個可以用正則表達式,也可以定義。
function template(source){ var temp=source; return function(obj){ for(var prop in obj){ var tpl="<%="+prop+"%>"; temp=temp.replace(tpl,obj[prop]); } console.log(temp); } }
用for-in循環獲取對象的鍵名,從而獲得鍵值,有意思的是不能直接獲取鍵值。這題后來看到有大神考慮到xss漏洞,模板安全的問題,后來查了查,確實是這樣,它的產生與多數模板有關(詳情請移入深入淺出node.js,第八章),下面我貼出一些代碼。
注:這是別人的代碼,僅供參考。
不說了,我要去擼代碼去了,還有繼續努力,大家加油。