zoukankan      html  css  js  c++  java
  • 声明提前、原型、静态方法的一些所得

    一、声明提前:

    声明提前有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();    // 直接调用
  • 相关阅读:
    新手学习FFmpeg
    新手学习FFmpeg
    新手学习FFmpeg
    进阶计划
    面试题汇总
    grep命令
    Quartz教程三:Job与JobDetail介绍
    spring boot热部署
    Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)
    SpringBoot集成篇(二) 异步调用Async
  • 原文地址:https://www.cnblogs.com/jingouli/p/11355203.html
Copyright © 2011-2022 走看看