js的OOP
在es6中,对象是一个无序属性集合 可以是基本值 对象 函数
数据属性:只读属性不可删除不可枚举
访问属性:getter setter
构造函数:new 来生成对象
函数与原型 prototype
一种最简单的继承 利用原型链来实现继承 子类.prototype=new 父类的实例
创建自定义类型性的最佳方式 :构造函数+prototype
构造函数中的是每一个实例都特有的属性
prototype中 放置的是公共的方法
继承
1、原型链继承
2、寄生组合式继承
function object(obj) { //返回原型为obj的没有实例属性的对象
function Fun() {}
Fun.prototype=obj;
return new Fun();
}
function inheritPrototype(subType,superType) {
//建立原型链,继承父类原型属性 用自定义函数object函数 避免父类实例具有独特的属性 切掉多余的父类实例属性
var prototype=object(subType.prototype)
prototype.constructor=subType //保证构造器的正确
subType.prototype=prototype;
}
function subType(arg1,arg2) {
superType.call(this,arg1) //继承父类的属性的分别的值
this.attr=value;
}
inheritPrototype(subType,subType) //实现了寄生组合
