前端笔试题2 JS部分
笔试题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部分的更多相关文章
- 也许你需要点实用的-Web前端笔试题
之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...
- 2015年百度实习生前端笔试题上海卷a
1.写出javascript运行结果:alert(‘5’+5); 结果:’55’ 2.写出javascript运行结果:for(var i=0; i<10; i++){} alert(i); 结 ...
- 2016届百度实习生前端笔试题上海卷a
1.写出javascript运行结果:alert(‘5’+5); 结果:alert()函数中不能进行算术运算或字符串拼接,故不会弹出对话框. 2.写出javascript运行结果:for(var ...
- 前端笔试题 JS部分
题目 http://www.itmian4.com/forum.php?mod=viewthread&tid=4540 http://www.itmian4.com/forum.php?mod ...
- 2015腾讯web前端笔试题
1 请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性) 2 请指出一下代码的性能问题,并经行优化. var info="腾讯拍拍网(www.paipai.com)是 ...
- web前端笔试题
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test ...
- 腾讯web前端笔试题及个人答案
每道题都有答案,大多数答案亲测正确. 简答题 1.js中“5”+4=? 答案:54 2.js中void(0)=? 答案:undefined 3.js中NaN*4=? 答案:NaN 4.js中null* ...
- web前端笔试题总结
em和rem的区别: 浏览器的默认字体高度是16px,1em=16px:大小可以自己设置调整,并且默认集成父级容器中文本的大小. rem是CSS3中新增的属性,默认情况下是文本尺寸的大小,不同的是它集 ...
- 腾讯2013笔试题—web前端笔试题 (老题练手)
问题描述(web前端开发附加题1): 编写一个javascript的函数把url解析为与页面的javascript.location对象相似的实体对象,如:url :'http://www.qq.co ...
随机推荐
- 关于android:screenOrientation="portrait" 横竖屏切换
当在AndroidManifest.xml文件中定义了android:screenOrientation="portrait",就表示当我们切换横竖屏的时候,屏幕的内容始终以竖屏显 ...
- .Net 利用消息在进程间通讯实现进程互操作
有时候我们会遇到需要在两个进程间通过某种方式实现互操作,方法有很多,例如你可以尝试让两个进程持续监视一个外部文件,由此文件记录各自进程的数据:还有可以使用网络端口实现进程间通讯.共享一片内存区域记录及 ...
- 简单的CSS网页布局--三列布局
三列布局其实不难,不过要用到position:absolute这个属性,因为这个属性是基于浏览器而言,左右部分各放在左右侧,空出中间一列来实现三列布局. (一)三列布局自适应 <!DOCTYPE ...
- ContentType 属性 MIME
".asf" = "video/x-ms-asf" ".avi" = "video/avi" ".doc&qu ...
- Excel Sheet Row Numbers
Given the sequence S1 = {a,b,c,d,…,x,y,z,aa,ab,ac…. } and given that this sequence corresponds (term ...
- codeforces 650D. Zip-line 线段树
题目链接 题目的意思很简单, 就是给你n个数, m个询问, 每次询问修改某一个位置的值, 然后问你修改完之后数列的lis是多少. 询问独立. 对于原数列, 我们将它离散化, 令dp1[i]为以i为结尾 ...
- poj 2155 matrix 二维线段树
题目链接 区间翻转, 单点查询, 查询操作我真是不太明白...... #include <iostream> #include <vector> #include <cs ...
- hdu 4902 Nice boat 线段树
题目链接 给n个数, 两种操作, 第一种是将区间内的数变成x, 第二种是将区间内大于x的数变为gcd(x, a[i]). 开三个数组, 一个记录区间最大值, 这样可以判断是否更新这一区间, 一个laz ...
- JAVA并发,线程工厂及自定义线程池
package com.xt.thinks21_2; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...
- Html 小插件3
搜狗搜索框代码 <script>function verifyquery(form){if(form.sogou_drop.value==2){form.insite.value='';} ...