这些题目是作完笔试以后,在别的地方找到的,如今附上。node
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.这个能够用正则表达式,也能够定义。app
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,第八章),下面我贴出一些代码。
注:这是别人的代码,仅供参考。xss
不说了,我要去撸代码去了,还有继续努力,你们加油。函数