javascript E5面向对象和 E6面向对象

时间:2018-12-15
本文章向大家介绍javascript E5面向对象和 E6面向对象,主要包括javascript E5面向对象和 E6面向对象相关应用实例、知识点总结和注意事项,具有一定的参考价值,需要的朋友可以参考一下。

javascript es6之前的面向对象方法:

一般使用构造函数来实现

function Person (name, age) {
    this.name = name;
    this.age = age;
}
// 实现静态属性, into属性就是静态属性 因为它是用Person直接 . 属性名的
Person.into = 'abc'
// 然后new 一个实例出来
var p1 = new Person('李明', 22);
console.log(p1) 
console.log(Person.into)

可以看到浏览器的控制台已经出来结果了;

只是一些简单的实例;

下面是通过ES6的class 类来创建

class Anything{
    // ES6通过constructor()方法 ,构造器来实现
    constructor(name, age){
        // 实例属性
        this.name = name;
        this.age = age;
    }
    // 静态属性通过 static 来创建静态属性;
    static into = 'compare'
}
const a1 = new Anything('car', 5);
console.log(a1);
console.log(Anything.into);

export default Anything;

看看打印的结果

结果和上面用构造函数创建的是一样的;当然里面也可以写方法 function;

可用原型对象来创建:

Person.prototype.sayName = function(){

    console.log('这是 Person函数的实例方法');

}

可以通过 p1.sayName(); 直接调用;

那么用class 创建的Anything 类 创建实例方法

直接在Anything 对象里面 和 构造器constructor 平级 直接写: 例如

someone(){

     console.log('这是Anything的实例方法 ');

}

可以直接通过 a1.someon(); 调用;

// 总结

1、用构造函数本身 直接 点 ▪ 上的 属性或者 function() 函数 叫静态属性或方法; 一般不会这样做;

2、用构造函数加原型对象 点 ▪ 上的 function() 方法 是实例方法; 可以被调用

3、ES6 class 类 本身只是语法糖 ,只是和之前写法不一样