用友畅捷通高级前端笔试题(一)凭借回忆写出

题目1、

下面的html标签

<ul>

<li></li>

<li></li>

<li></li>

<li></li>

<li></li>

......

</ul>

1、用js代码实现li的点击各不相同,不依赖js的库,不能改变li的属性和内容

2、兼容IE firefox chrome等主流浏览器

参考答案

<script>
    function newFunc() {
        var ul1 = document.getElementById('ul1');
        var lis= ul1.getElementsByTagName("li");
        var length=lis.length;
        for( var i=0;i<length;i++ ) {
           eval('lis[i].onclick = function (e) {e.stopPropagation();alert('+i+')}');
        }
    }

    newFunc();

</script>

 

下面的代码采用闭包模式,但是行不通,有没有谁能告诉我1

1、闭包能不能解决

2、如果闭包能解决,怎么弄。

<script>

    function  fn(i) {
        return function () {
            var j = i;
            alert(j);
        }
    }

    function newFunc() {
        var ul1 = document.getElementById('ul1');
        var lis = ul1.getElementsByTagName("li");
        var length = lis.length;
        for (i = 0; i < length; i++) {
            lis[i].onclick = function (e) {
                e.stopPropagation();
                fn(i)();
            }
        }
    }


    newFunc();



</script>

 后来从网上找到的答案

<script>

    function  fn(i) {
        return function () {
            var j = i;
            alert(j);
        }
    }

    function newFunc() {
        var ul1 = document.getElementById('ul1');
        var lis = ul1.getElementsByTagName("li");
        var length = lis.length;
        for (i = 0; i < length; i++) {
            (function (i) {
                lis[i].onclick = function () {
                    alert(i);
                }
            })(i);
        }
    }
    newFunc();

</script>

 经过好几个月的插件编写历程,终于领悟到闭包的用法 (2016年12月3日),感谢勤奋的自己。

一直被闭包困扰的我,终于实现了下面的案例,几乎将近完美的解决方案。

var elems = document.getElementsByTagName('a');
function keep(i){
 var keep = i;
 return function(){
   alert(keep);
 }
}
for (var i = 0; i < elems.length; i++) {
   var index
    elems[i].addEventListener('click', keep(i), 'false');
}

题目2、

如何实现js中的面向对象中的封装继承和多态。

参考答案

参考我的博文

http://www.cnblogs.com/sexintercourse/p/5679303.html

题目3、

如何拷贝一个对象

参考我的博客

http://www.cnblogs.com/sexintercourse/p/5679175.html

题目4、

自定义实现jquery中的bind方法

题目5、

console.log(0==false) true

console.log(1==true) true

console.log(2==false) false

console.log(2==true) false

console.log(undefined==false)false

console.log([] instanceof Array) true

console.log(typeof []=="array") false

 

posted on 2016-07-17 21:42  漫思  阅读(1925)  评论(0编辑  收藏  举报

导航