用友暢捷通高級前端筆試題(一)憑借回憶寫出


題目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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM