码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-14 23:19:25      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:col   调用   直接   dog   plane   ==   默认   xxx   cti   

一、声明提前:

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

 

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

标签:col   调用   直接   dog   plane   ==   默认   xxx   cti   

原文地址:https://www.cnblogs.com/jingouli/p/11355203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!