zoukankan      html  css  js  c++  java
  • 前端笔试题 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://stackoverflow.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://stackoverflow.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>
     
    
     
    
     
  • 相关阅读:
    Vue-基础(四)
    Vue-基础(三)
    Vue-基础(一)
    Vue-基础(二)
    CSS-初始化模板2(common.css)
    CSS-初始化模板1(normalize.css)
    CSS预处理器-Less
    MySQL视窗函数row_number(), rank(), denser_rank()
    LeetCode第4题:寻找两个有序数组的中位数
    无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/cart55free99/p/3633798.html
Copyright © 2011-2022 走看看