CVTE前端笔试编程题

这些题目是做完笔试之后,在别的地方找到的,现在附上。

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,第八章),下面我贴出一些代码。
注:这是别人的代码,仅供参考。

不说了,我要去撸代码去了,还有继续努力,大家加油。

 

转载于:https://www.cnblogs.com/yyfyl/p/7495580.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值