JS6-面向对象程序设计

158 阅读1分钟

6.1 访问器属性 get 读取属性 set写入属性

6.2创建对象

6.1.工厂模式。创建一个函数,对象的属性由传参决定。

function creobj(name) {
    var o = {};
    o.name = name
    o.sayName = function () {
        console.log(this.name)
    }
    return o
}
var c = creobj('xiaowang')
c.sayName()

6.2 构造函数模式

function Person(name){
    this.name=name
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");
console.log(person1.constructor===person2.constructor)

person1和person2有着相同的构造函数。

6.3 原型模式

Person.prototype.name="wjy"
var person1=new Person();
console.log(1,person1.name)

6.4组合使用构造函数模式和原型模式 构造函数用于定义实例属性,原型模式用于定义方法和共享的属性。 6.25 动态原型模式。。。等等。。。。

6.3

继承-原型链

通过原型来实现继承,原型实际上是另一个类型的实例

function superType(){
this.colors=['red','yellow']
}
function subType(){

}
subType.prototype=new superType()
var instance1=new subType()
instance1.colors.push('black')
构造函数继承

构造函数继承需要借助apply(),call()方法来在新创建的对象上执行构造函数。

function superType(){
this.colors=['red','yellow']
}
function subType(){
    superType.call(this)
}
var instance2=new subType();
console.log(11,instance2.colors)构造函数继承需要借助apply(),call()方法来在新创建的对象上执行构造函数。

组合继承 原型链实现对原型属性二号方法的继承,构造函数实现对实例属性的继承。 寄生组合继承 等等。。。