前端笔试题 JS部分

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var div=document.createElement('div');
var o={a:1,b:{c:1}};
var obj = {
name: "Simon",
age: "20",
clothing: {
style: "simple",
isDouche: false
}
}
var arr=[1,2,3];
window.onload=function(){
       //当输入框获取焦点时 删除原有字符 离开输入框且未输入字符时重新显示原有字符
//checkInput();
//当点击链接/按钮时 显示这是当前第几个链接/按钮
//countLink();
//countBtn();
//countBtn2();
//获取全部父节点名字
//getAllParents(document.getElementById('getParent'));
// 给定一个对象var o={a:1,b:{c:1}}; 取到全部属性的名字 如abc
//recursion(o);
//recursion(obj);
//比较除了第一个字符之外剩余字串 并按顺序排列
//asort();
//为数组添加Shuffle()方法
// addShuffle();
// testShuffle();
// 将两个数组合并在一起
//mergeArray();
// 判断是不是数组
//isArray(arr);
//alertMath();
//数组去重
//deleteDupligate();
//addUniqueForArray();
// 判断是否是String类型 'xxx' new String('xxx') 都要能够正确判断
//testString();
//显示标签名称
//alertName();
}
// all props
function allProp(){
for(prop in div.style){
str+=(prop+=' ');
}
document.getElementById('msg').innerHTML=str;
}
function checkProp(prop){
if(prop in div.style){
return true;
}else{
return false;
}
}
function checkInput(){
var input=document.getElementsByName('input1')[0];
//下面这种定义事件的方式看起来简单但是不好
//看起来定义了为blur事件定义了两个函数 //实际上后面一个函数覆盖了前面一个 最终只会弹出b2
// input.onblur=function(){
// alert('blur');
// }
// input.onblur=function(){
// alert('b2');
// }
//所以应该使用下面的方式
input.addEventListener('focus',function(){
if(this.value=='default'){
this.value='';
}
},false);
input.addEventListener('blur',function(){
if(this.value==''){
this.value='default';
}
}); } function countLink(){
var sum=document.getElementsByTagName('a').length;
console.log(sum);
for (var i = 0; i < sum; i++) {
document.getElementsByTagName('a')[i].onclick=function(x){
return function(){
alert(x);
}
}(i); //使用闭包Closure的方式向匿名函数传参
}
}
//关于事件传参使用Closure http://*.com/questions/10856517/javascript-issue-with-scope-and-passing-parameters-to-dynamically-created-even function countBtn(){
var all=document.getElementsByTagName('button');
var sum=document.getElementsByTagName('button').length;
for (var i = 0; i < all.length; i++) {
all[i].addEventListener('click',function(x) {
return function(){
alert(x);
}
}(i));
}
}
// 为什么要用return check this
// http://*.com/questions/750486/javascript-closure-inside-loops-simple-practical-example
function countBtn2(){
var all=document.getElementsByTagName('button');
for (var i = 0; i < all.length; i++) {
all[i].addEventListener('click',closureForCountBtn2(i));
}
}
function closureForCountBtn2(x){
return function(){
alert(x);
}
}
function getAllParents(dom){
if (dom.tagName=='html') {
console.log('html it is the root');
}else{
console.log(dom.tagName);
getAllParents(dom.parentNode)
}
} function recursion(o){
for(var name in o){
if(o.hasOwnProperty(name)){
console.log(name+" "+typeof(o[name])+" "+(o[name] instanceof Object));
if(o[name] instanceof Object){
recursion(o[name]);
}
}
}
} function asort(){
var arr=["abd","cba","ba"];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length-i-1; j++) {
//if(strcmp(arr[j],arr[j+1])==1){
//现在的要求是只比较除了第一个字符之外的剩余字符
if(strcmp(arr[j].substring(1),arr[j+1].substring(1))){
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
};
};
for(var index in arr){
console.log(arr[index]);
}
} function strcmp(str1,str2){
return ( str1 < str2 ) ? -1 : ( str1 > str2 ? 1 : 0 );
} function addShuffle(){
Array.prototype.shuffle=function(){
var len=this.length;
for(var i=0,j=0;i<len;i++){
j=(function(x){
return Math.floor(Math.random()*x);
}(len));
temp=this[i];
this[i]=this[j];
this[j]=temp; }
return this;
}
}
function getRandom(len){
return Math.floor(Math.random()*len);
}
function testShuffle(){
var arr=[1,2,3,4,5,6,7,8,9,10];
arr.shuffle();
console.log(arr);
} function mergeArray(){
var a = [-3,-1,0,1,3,5,7,9];
var b = [-4,-2,0,2,3,4,5,6,7,8];
for (p in b) {
a.push(p);
}
a.sort();
console.log(a);
} function isArray(obj){
//alert(obj instanceof Array);
//alert(obj.constructor==Array); //constructor
console.log('constructor---------------');
console.log(Object.constructor);//function Function() { [native code] }
console.log(typeof Object);//function 可执行对象说一律返回function
console.log(Object instanceof Object);//true
console.log(typeof Object.constructor);//function
console.log(Array.constructor);//function Function() { [native code] }
console.log({}.constructor);//function Object() { [native code] }
console.log([].constructor);//function Array() { [native code] } //constructor ==
var arr=[1,2,3];
console.log(arr.constructor);//function Array() { [native code] }
console.log(arr.constructor==Array);//true //prototype
console.log('---------------');
console.log(Object.prototype);//Object {}
console.log(Object.prototype.constructor);//function Object() { [native code] }
console.log({}.prototype);//undefined //根据犀牛书121页 字面量对象的原型就是Object.prototype
var F=function(){};
console.log(F);
console.log(F.prototype.constructor);//function (){}
console.log(F.prototype);//Object {} //由此可见 函数的prototye属性是一个对象
console.log(typeof F.prototype);
console.log((function(){}).prototype);//Object {}
console.log((function(){}).prototype.constructor);//function (){}
// //console.log(arr.prototype.constructor);//Uncaught TypeError: Cannot read property 'constructor' of undefined
//console.log({}.prototype.constructor);//Uncaught TypeError: Cannot read property 'constructor' of undefined //var o1= Object.create([1,2,3]);
// console.log(o1.prototype);//undefined
console.log('----------------');
function Animal(name){ }
console.log(typeof Animal.prototype);//object
console.log(Animal.prototype);//Animal {}
} function alertMath(){
var a= (Math.PI++);
var b = (Math.PI++);
alert(a);//3.14...
alert(b); } function deleteDupligate(){
var arr=[1,1,2,3,4,4,5,6,7,7,8,9];
for (var i = 1; i < arr.length; i++) {
if(isExists(i,arr)){
mymove(i,arr);
arr.length=arr.length-1;
}
}
console.log(arr);
}
function isExists(i,arr){
flag=false;
for (var j = 0; j < i; j++) {
if(arr[i]==arr[j]){
flag=true;
break;
}
}
return flag;
} function mymove(i,arr){
for(j=i;j<arr.length-1;j++){
arr[j]=arr[j+1];
}
} /*上面去除重复元素的方法太C语言了 */
// 看看这个帖子 http://php.js.cn/blog/array-unique-in-javascript/
//原文中第4中实现似乎是最高效的方式 但是改变了元素顺序 所以还是写第2种好了
function addUniqueForArray(){
//为数组添加function
Array.prototype.unique4=function(){
var uni={};//不重复元素列表 //key-value形式
var re=[];
for (var i = 0; i < this.length; i++) {
if(!uni[this[i]]){
uni[this[i]]=true;//值设置为true
re.push(this[i]);
}
};
return r;
}
}
function classof(obj){
if(obj===null)return null;
if(obj===undefined) return undefined;
// 注意 null undefined在使用==的时候被认为是相同的
//所以 第一个判断上如果使用的是== 是无法判断究竟是null还是undefined
return Object.prototype.toString.call(obj).slice(8,-1);
}
function testString(){
var isString=function(str){
return (typeof str=='string');//这种方式不能检测包装对象
}
console.log(isString('sdcds'));//true
console.log(isString(new String('scsc')));//false var isString2=function(arg){
return ((typeof arg=='string')||(arg.constructor==String));
}
console.log(isString2(new String('')));//true
var isString3=function(arg){
//return ((typeof arg=='string')||(typeof classof(arg)=='string'));
return ((typeof arg=='string')||(classof(arg)=='String'));
}
console.log(isString3(new String('')));//true
} function alertName(){
var all=document.getElementsByTagName('a');
for (var i = 0; i < all.length; i++) {
console.log(all[i].tagName);
};
} // 异步加载script
function loadScript(url, callback) {
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState){//IE
script.onreadystatechange = function(){
if (script.readyState == "loaded"||script.readyState == "complete"){
script.onreadystatechange =null;
callback();
 }
 };
}else{//Others: Firefox, Safari, Chrome,and Opera script.onload = function()
{
callback();
};
}
script.src = url;
document.body.appendChild(script);
}
</script>
</head> <body>
<div class='root'>
<a href="javascript:void(0);">111</a>
<button>1</button>
<div>
<a href="javascript:void(0);">222</a>
<button>
<span id='getParent'>2</span>
</button>
<div>
<a href="javascript:void(0);">323</a>
<button>3</button>
</div>
</div> </div>
</body>
</html>
上一篇:Python开发系列


下一篇:shell 编程记录