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

Posted 金钩梨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了声明提前原型静态方法的一些所得相关的知识,希望对你有一定的参考价值。

一、声明提前:

声明提前有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();    // 直接调用

 

以上是关于声明提前原型静态方法的一些所得的主要内容,如果未能解决你的问题,请参考以下文章

变量提升和函数声明提前

原型和原型链

JS基础 类

Zend 模型类 - 选择被声明为静态方法的查询

我要查一些API函数的原型,在哪里查呢?

如何在 Main 方法中声明静态变量?