前端笔试题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 ...
随机推荐
- 【Linux学习】Ubuntu下嵌入式交叉编译环境arm-linux-gcc搭建
(1)首先选择一个路径用来存放arm-linux-gcc.我选用的是/home/book,并在以下建立一个目录arm-linux-gcc. (2)利用cp EABI-4.3.3_Emdedsky_20 ...
- 【分享】事实上,你VS界面也可以如此,VS界面美化
阿土.它直接在地图上. 第一节目:Transformers(变形金刚) 第二方案:Assassin's Creed (刺客信条) watermark/2/text/aHR0cDovL2Jsb2cuY3 ...
- 什么是CTS、CLS和CLR
CTS.CLS和CLR是.NET框架的基本概念,但往往成为程序员们忽视的部分.清楚理解三者的概念,有助于.NET程序员编写高效安全的.NET程序. 所涉及到的知识点 • .NET的基本概念 • ...
- 使用 AngularJS 从零构建大型应用
0.导言 1.准备工作 2.构建框架 3.丰富你的directives 4.公用的services 5.用controllers组织业务 导言 纵览线上各种AngularJS教程,大部分都是基础与一些 ...
- JavaScript值延迟脚本和异步脚本
Html 4.0为<script>标签定义了defer属性,这个属性的用途是表名脚本在执行时,不会影响页面的构造.也就是说,脚本会延迟到整个页面解析完毕之后在运行,因此,在<scri ...
- Oracle存储过程返回一张表数据
在oracle数据库中你要在程序里得到一张表的数据就必须先创建游标和SQL Service不一样. --创建游标create or replace package pkg_Dataas type re ...
- 使用泛型对java数组扩容
编写一个通用方法,其功能是将数组扩展到10%+10个元素(转载请注明出处) package cn.reflection; import java.lang.reflect.Array; public ...
- 关于eclipse(64位)下aptana插件安装报错问题解决
最近一直没有写过js,换了新电脑以后,eclipse下的aptana插件也没有装过,这几天要写js想重新把aptana装上,但是不知怎的,link方式.在线安装方式还有离线包下载下来利用eclipse ...
- java之适配器模式
interface Window { public void open(); public void close(); public void activated(); ...
- IOS 特定于设备的开发:使用加速器启动屏幕上的对象
借助一点编程工作,iPhone的机载加速计就可以使对象在屏幕上四处“移动”,实时响应用户倾斜手机的方式.下面的代码就是创建一个动画式的蝴蝶,用户可以使之快速移过屏幕. 使之工作的秘密在于:向程序中添加 ...