• 声明提前、原型、静态方法的一些所得


    一、声明提前:

    声明提前有3个过程:创建、初始化、赋值:

    console.log(x);    // undefined
    function xxx(){};
    var x=10;
    
    // 等同于
    var x=undefined;    // 创建并初始化
    function xxx(){};
    x=10;    // 赋值

    然而let只创建不赋值:

    console.log(x);    // 报错
    let x=10;
    function xxx(){};
    
    // 等同于
    let x;
    function xxx(){};

    二、原型

    通常我们会这样创建一个对象:

    var Plane=function(){
        this.name='plane';
    }
    
    var plane=new Plane();
    plane.name='plane1';

    我们除了通过new一个实例外,还可以通过克隆:

    var plane2=Object.create(plane);

    我们在JavaScript遇到的每个对象,实际上都是从Object.prototype对象克隆而来的,Object.prototype就是它们的原型。用new运算符来创建对象的过程,实际上也只是先克隆Object.prototype对象,再进行一些其他额外操作的过程。

    JavaScript给对象提供了__proto__,某个对象的__proto__属性默认会指向它的构造器的原型对象:

    function Animal(name){
         this.name=name;
    }
    
    var dog=new Animal();
    console.log(dog.__proto__===Animal.prototype);    // true

    三、静态方法

    通过static定义鼎泰方法,静态方法可以直接调用:

    class Animal{
        spaeak(){
            return this;
        }
        static eat(){
            return this;
        }
    }
    
    Animal.speak();    // 报错
    Animal.eat();    // 直接调用
  • 相关阅读:
    servlet ; basepath ; sendredirected ;
    4.18 一个阶段
    服务器强迫患者 ;软件试用狂人
    html ; css ; javascript ; json ;
    评审意见
    Beta版使用说明书
    内测版发布反思问题总结
    团队项目第二阶段冲刺第十天
    团队项目第二阶段冲刺第九天
    团队项目第二阶段冲刺第八天
  • 原文地址:https://www.cnblogs.com/jingouli/p/11355203.html
Copyright © 2020-2023  润新知