• js一些小题(二)


    *******************************************************************

    一个全局下的函数:

    function test()
    {
    alert(this);
    }

    当直接调用时test(); 会弹出object window因为很明显这里的this代表全局.

    在页面添加一个div元素,id为d1:

    var odiv=document.getElementById('d1');

    odiv.onclick=test;  //此时this指向div这是元素。

    注意下面代码:

    odiv.onclick=function(){
    test();
    };

    此时结果依然弹出object window,this依然指向全局。


    *******************************************************************

    看下面代码:


    for(var i=0;i<5;i++)
    {
    setTimeout(function(){
    alert(i);
    },1000);
    }

    你以为会依次弹出0,1,2,3,4?那就错啦,该程序上来就会弹出5,然后连续弹出5次5。

    以下代码才会弹出0,1,2,3,4

    for(var i=0;i<5;i++)
    {
    alert(i);
    }


    ***********************************************************************

    看下列代码:

    var obj={};
    var newobj={
    m1:'mmm1',
    m2:'mmm2'
    };
    for(var e in newobj)
    {
    obj[e]=function(){
    alert(newobj[e]);
    }
    }
    alert(obj==newobj);    //false
    obj.m1();          //mmm2
    obj.m2();           //mmm2 

    执行结果为false,mmm2,mmm2


    ****************************************************************************

    随机打乱数组:

    首先要介绍一下关于数组的sort()排序:


    sort()排序并不能实现数值意义上的大小排序,它是按照asc码进行的排序,所以对于11和2两个数字来说,sort()排序会认为2大于11,解决方法就是引入一个函数

    function compare(a,b){

    return a-b;

    }

    他的是这样工作的。每次从数组里面挑选两个数 进行运算。
    如果传入的参数是0 两个数位置不变。
    如果参数小于0 就交换位置
    如果参数大于0就不交换位置
    接下来用刚才的较大数字跟下一个进行比较。这样循环进行排序。

    这样要对数组arr排序时 :arr.sort(compare);即可。

    由此思想可解决打乱数组的问题:

    function test(a,b){
    return Math.random()>0.5?1:-1;  //这样会随机的出现1或-1
    }

    这样arr.sort(test);就能打乱数组。



    不行啦,好困啊,从编辑器里暂时先找到这几题贴上来,后续还有,先躺下,明天继续努力,坚持每天写一篇,哪怕知识点再小!坚持!












  • 相关阅读:
    Objective C 快速入门学习五
    Objective C 快速入门学习四
    Objective C 快速入门学习三
    Objective C 快速入门学习二
    Objective C 快速入门学习一
    基于内容的音频和音乐分析领域的研究工作
    特征选择常用算法综述
    外包项目网站积累
    IOS开发资料积累
    小心被“杜比”认证忽悠了
  • 原文地址:https://www.cnblogs.com/chayangge/p/4288678.html
Copyright © 2020-2023  润新知