笔试题2

var EventME = {};
EventME.addHandle = function(ele, eventName, handleFunction) {
if (ele.addEventListener) {
ele.addEventListener(eventName, handleFunction, false);
} else if (ele.attachEvent) {
ele.attachEvent('on' + eventName, handleFunction);
} else {
ele['on' + eventName] = handleFunction;
}
};
window.onload = function() {
//写一个函数 去除开头和结尾的空格
//yourTrim();
//生成一个页码 要求当前页之前最多有n页 当前页之后有n页 总共2n+1页 n可设置
//makePage(4,3);//ok
//makePage(3, 3); //ok
//统计出现次数最多的字符以及其次数
//countMaxChar();
//统计字串长度 中文占2个长度
//countWords();
//数组去重
//deleteDuplicate();
//关于this的理解
aboutThis();
//计算二进制的值
//calcBinNum(1001);
} function yourTrim() {
String.prototype.trimME = function() {
var firstIndex = ,
endIndex = this.length - ;
for (var i = ; i < this.length; i++) {
if (this[i] != ' ') break;
}
firstIndex = i;
i = this.length - ;
while (i >= ) {
if (this[i] != ' ') {
break;
} else {
i--;
}
}
endIndex = i;
return this.slice(firstIndex, endIndex + );
}
console.log(new String(' bubu ').trimME());
} function makePage(curPageNo, nsize) {
//DOM本身没有insertAfter() 自己写一个
//若当前节点是最后一个节点的时候 新插入的后续节点将成为最后一个节点
//因此使用appendChild()
//若当前节点不是最后一个节点 那么首先通过nextSibling找到当前节点的额下一个节点
//然后再使用insertBefore
//这里的当前节点是指 新插入的后续节点之前得那个节点
function myInsertAfter(after, curNode) {
if (curNode.parentNode.lastChild == curPage) {
curNode.parentNode.appendChild(after);
} else {
curNode.parentNode.insertBefore(after, curNode.nextSibling);
}
return after;
} var wrapper = document.createElement('div');
document.body.appendChild(wrapper);
var curPage = document.createElement('span');
curPage.innerHTML = curPageNo;
curPage.className += 'cur';
wrapper.appendChild(curPage); function createPage(pageNo) {
var page = document.createElement('span');
page.innerHTML = pageNo;
return page;
}
curPageloop = curPage;
countPre = ;
for (var i = curPageNo - ; i >= ; i--) {
if (countPre++ >= nsize) {
break;
}
pre = createPage(i);
//在待操作的两个节点的父节点上调用insertBefore
curPageloop.parentNode.insertBefore(pre, curPageloop);
curPageloop = pre;
};
curPageloop = curPage;
for (i = curPageNo + ; i <= * nsize + ; i++) {
nxt = createPage(i);
myInsertAfter(nxt, curPageloop);
curPageloop = nxt;
}; } function countMaxChar() {
var str = 'hgfuihgwhiho rhfgsdchuyhhthsdfhcuhyt';
var charlist = { };
var max = ;
maxChar = '';
for (var i = ; i < str.length; i++) {
//console.log(str[i]);
if (!charlist[str[i]]) { //当这个字符是第一个出现 那么charlist中还没有这个key
charlist[str[i]] = ;
} else {
charlist[str[i]]++;
}
if (charlist[str[i]] > max) {
max = charlist[str[i]];
maxChar = str[i];
}
};
console.log(max + maxChar);
} function countWords() {
//中文判断 参考http://www.jb51.net/article/14004.htm
String.prototype.isChinese = function(i) {
var re = /[^\u4e00-\u9fa5]/;
if (re.test(this[i])) return false;
return true;
}
String.prototype.myLength = function() {
var count = ;
for (var i = ; i < this.length; i++) {
if (this.charCodeAt(i) > && this.isChinese(i)) {
count += ;
} else {
count++;
}
};
return count;
}
console.log('大家好sdc'.myLength());
} function deleteDuplicate() {
Array.prototype.eraseDuplicate = function() {
var after = {};
var re = [];
for (var i = ; i < this.length; i++) {
if (!after[this[i]]) {
after[this[i]] = ;
re.push(this[i]);
}
}
return re;
};
console.log([, , , , , , , ].eraseDuplicate());
} // 关于this http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html
function aboutThis() {
var foo = {
x:
};
var bar = {
x: ,
test: function() {
console.log(this === bar); // true
console.log(this.x); // 20
//this = foo; // 错误,任何时候不能改变this的值
}
};
bar.test();// true 20 //因为是bar调用的test 所以test中得this就是bar
foo.test=bar.test;//给foo对象添加了一个属性test 这个属性的内容是bar中test属性内容
//注意不要写成foo.test=bar.test() 这是把bar对象test()执行结果赋值给foo.test属性
foo.test();// false 10
function foo2() {
console.log(this);//window
}
foo2();
var foo3 = {
bar:function() {
console.log(this);
console.log('-----'+(this===foo3));
},
sub:{
barSub:function(){
console.log(this);
console.log('....'+(this==foo3));
}
}
}
foo3.bar();//foo3 -----true
foo3.sub.barSub();//sub ....false
// apply和call改变了所执行的函数中的this指向
foo3.sub.barSub.apply(Window);//Window ....false
var exe=foo3.bar;
exe();//Window -----false } function calcBinNum(num){
var nums=num+'';
var sum=;
var len=nums.length;
for (var i = nums.length-; i >=; i--) {
n=nums.charAt(i);
sum+=Math.pow(,len--i)*n;
};
console.log(sum); }

前端笔试题2 JS部分的更多相关文章

  1. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  2. 2015年百度实习生前端笔试题上海卷a

    1.写出javascript运行结果:alert(‘5’+5); 结果:’55’ 2.写出javascript运行结果:for(var i=0; i<10; i++){} alert(i); 结 ...

  3. 2016届百度实习生前端笔试题上海卷a

    1.写出javascript运行结果:alert(‘5’+5); 结果:alert()函数中不能进行算术运算或字符串拼接,故不会弹出对话框.   2.写出javascript运行结果:for(var ...

  4. 前端笔试题 JS部分

    题目 http://www.itmian4.com/forum.php?mod=viewthread&tid=4540 http://www.itmian4.com/forum.php?mod ...

  5. 2015腾讯web前端笔试题

      1 请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性) 2 请指出一下代码的性能问题,并经行优化. var info="腾讯拍拍网(www.paipai.com)是 ...

  6. web前端笔试题

    1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test ...

  7. 腾讯web前端笔试题及个人答案

    每道题都有答案,大多数答案亲测正确. 简答题 1.js中“5”+4=? 答案:54 2.js中void(0)=? 答案:undefined 3.js中NaN*4=? 答案:NaN 4.js中null* ...

  8. web前端笔试题总结

    em和rem的区别: 浏览器的默认字体高度是16px,1em=16px:大小可以自己设置调整,并且默认集成父级容器中文本的大小. rem是CSS3中新增的属性,默认情况下是文本尺寸的大小,不同的是它集 ...

  9. 腾讯2013笔试题—web前端笔试题 (老题练手)

    问题描述(web前端开发附加题1): 编写一个javascript的函数把url解析为与页面的javascript.location对象相似的实体对象,如:url :'http://www.qq.co ...

随机推荐

  1. 常用的连接字符串(vs中连接sqlserver)方便随时查看

    Sql Server身份验证有两种,一种是Windows身份验证,还有一种是Sql Server 身份验证 Windows身份验证连接字符串: string connectionString = &q ...

  2. EF 4.0 更新数据时候的一个错误及其处理

    错误如图: 修改下方法后可以进行更新了.但是中间多了一步查询 /// <summary> /// 更新一个产品分类 /// </summary> /// <param n ...

  3. sql server dateadd()

    定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日期表达式.number 是您希望添加的 ...

  4. STMP发送邮件被当垃圾邮件处理的解决方法

    昨天使用了.Net通过smtp发送邮件的方式发送了一封邮件到自己的QQ邮箱,但是发送成功后并没有提示邮箱收到新的邮件,而且去收件箱里面也没有新增的邮件. 这让本人觉得奇怪,所以就觉得是否被当作垃圾邮件 ...

  5. Sql"列转行"三种方法对比

    SQL code------ 合并列值  --***************************************************************************** ...

  6. UpdatePanel + 弹出框

    ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "", "alert('操作成功!') ...

  7. AOP 切面编程

    简介 如果你很熟悉面向方面编程(AOP),你就会知道给代码增加“切面”可以使代码更清晰并且具有可维护性.但是AOP通常都依赖于第三方类库或者硬编码的.net特性来工作.虽然这些实现方式的好处大于它们的 ...

  8. android基于XMPP的消息推送机制

    关于服务器端向Android客户端的推送,主要有三种方式:1.客户端定时去服务端取或者保持一个长Socket,从本质讲这个不叫推送,这是去服务端拽数据.但是实现简单,主要缺点:耗电等2.Google的 ...

  9. Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)

    窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置. Qt中可以采用两种方法达到窗口的屏幕居中显示: 方法 ...

  10. Codeforces 427D Match &amp; Catch(后缀自动机)

    [题目链接] http://codeforces.com/problemset/problem/427/D [题目大意] 给出一个两个字符串,求出最短且在两个字符串中唯一的公共子串. [题解] 以原字 ...