美文网首页
2018-07-12 JavaScript(4)

2018-07-12 JavaScript(4)

作者: 棕色试剂瓶 | 来源:发表于2018-07-12 21:07 被阅读0次

    JavaScript基础语法(4)

    在js中,万物皆对象。为什么zhe么说呢?因为即使是一个类,在js中也是object或者window的一个对象。

    对象

    代码示例:

      function User(id,name) {
            this.id=id;
            this.name=name;
            this.show=function () {
                console.log(this.id+">>>"+this.name)
            }
        }
        var u1=new User('001','tom');
        var u2=new User('008','rose');
        u1.nation='china';
    

    说明:

    • 当进行u1.nation='china'操作后,相当于User类新加了一个nation属性,并且将u1的nation属性设置为china。

    代码示例:

        function Admin() {}
        var ad01=new Admin();
        var ad02=new Admin();
        ad01.name='admin001';
    

    说明:

    • 函数也可以看成是一个类,同样可以通过上述方法为其添加属性,赋值。
      代码示例:
        var vip={};
        vip.name='vipuser';
    

    说明:

    • 也可直接为类通过.的方式添加属性,并赋值。

    原型链

    任何一个类都有一个原型,原型中存放的东西是共有的,可以被其实例化的对象所调用,也可以被其子类的实例化对象所调用。
    图片示例:

    图形说明.png
    • 结合图片,当调用u1的属性时,会现在u1的父类中寻找,若没有找到会到其父类的prototype中寻找,如果还没找到回到其父类的父类的prototype中寻找。

    u1=>u1父类=》u1父类prototype=》u父类的父类=》u1父类的父类的prototype

    • 这里面在类没有实例化的时候相当于一个二维平面,只具备逻辑概念,没有实体。prototype和类实例化都相当于几何体,有实际意义。
      代码示例:
       User.prototype.nation='usa';
        User.prototype.show=function () {
    
        }
        User.prototype.school='qinghua';
        var u1=new User('001','tom');
        var u2=new User('008','rose');
        u1.nation='china';
    
        console.log(`u1.nation=${u1.nation}`);
        console.log(`u2.nation=${u2.nation}`);
    

    结果:

    u1.nation=china
    u2.nation=usa

    • 通过结果可以看出,prototype中的nation为所有对象共有。

    可以通过如下方法整理自己的功能代码:

    function Util(){
    }
    //登录功能
    Util.prototype.login(){
    }
    //排序功能
    Util.prototype.sort(){
    }
    
    

    以后在使用过程中可以直接通过Util.login()来调用方法。

    计时器

    计时器主要分为两种:

    1.  // var timeout=setTimeout(show,2000);//2000毫秒后执行一次  
      
    2. var inter=setInterval(show,1000); //间隔1000毫秒执行一次  
      
    • js是一种单线程异步的语言。

    js一次只能执行一个任务,一个任务在执行一段时间后执行下一个,因为执行速度太快使人们觉得多任务同时执行。
    代码示例:

     function add(m,n) {
            var c;
            setTimeout(function () {
                c=m+n;
            },100);
            return c;
        }
        console.log(add(10,20));
    

    上面程序执行的结果为

    undefined

    • 因为当程序执行到setTimeout时,程序不会等待,而是直接向下执行,会直接返回c。c此时未定义,所以结果为undefined。(造成此结果的原因即为js的单线程异步执行机制)

    回调函数

    说明:

    即a调用一个函数,在函数结束后会返回来调用通知a。

    代码示例:

    function add(m,n,callback) {
           setTimeout(function () {
               var c=m+n;
               callback(c);   //show(30)
           },3000);
        }
    
     add(30,40,function (res) {
            console.log(res);
        })
    

    这段代码中虽然function中会返回undfined,但是并被有人接受它,程序不结束,等待计时器结束后输出结果。


    this

    this表示this所在的函数被谁调用,this就是谁。


    相关文章

      网友评论

          本文标题:2018-07-12 JavaScript(4)

          本文链接:https://www.haomeiwen.com/subject/ubarpftx.html