构造函数


1. es6方案
    Object.create 根据指定的原型创建新对象,原型可以是 null; 
    Object.getPrototypeOf 获得一个对象的原型; 
    Object.setPrototypeOf 设置一个对象的原型

    Object.create(proto, [propertiesObject])
    语法使用, proto 是对象原型, propertiesObject可有可无

2.es5方案
通过new的方式去创建
eg 
2.1 构造器中添加属性
    function c1() {
        this.p1 = '测试1'
    this.p2=function() {
            console.log(this.p1)
        }
    }
    var o1 = new c1
    o1.p2()
    涉及到一个this的指向问题, 这个里的this 指向函数或者说是函数的调用者
2.2 构造器的 prototype 属性上添加属性
    function c2() {
        c2.prototype.p1 =1
        c2.prototype.p2 = function () {
            console.log(this.p1)
        }
    }
    var o2 = new c2
    o2.p2()

2.3 class关键字
    class Proto {
        dis() {
            this.width = width
            this.height = height
        }
        pp () {
            return this.width + this.height
        }
    }
    let ccc = new Proto(3, 9)
    console.log(ccc.pp())
    注意,new 的时候就要传入参数,要不然会是NAN
    extends 提供了继承能力
    eg:下面例子中的test1继承了 rectangle基本属性
    class test1 extends rectangle {
        constructor(height, width) {
            super(width, height)
        }
        say() {
            return this.width + this.height
        }
    }
    var bbb = new test1(3, 6)
    console.log(bbb.say())
class 关键字和箭头运算符可以完全替代旧的 function 关键字

相关