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 关键字