对象创建模式和继承模式

对象创建模式和继承模式

对象创建模式

  • Object构造函数模式(内部属性/方法不确定)
    • 先创建Object空对象,在动态添加属性/方法
var p = new Object();
p.age = 19;
p.name = 'curry';
p.setName = function(){
	this.name = name;
}
p.setName('kevin');
  • 对象字面量模式(内部属性/方法确定)
    • 使用{}创建对象,同时指定属性/方法
var p = {
    age: 19,
    name:'curry',
    setName(){
        this.name = name;
    }
};
p.setName('kenvin');
  • 工厂模式
    • 通过工厂函数动态创建对象并返回,适用于需创建多个对象的场景
function createPerson(name,age){
	return p = {
        age: age,
        name:name,
        setName(){
            this.name = name;
        }
    };
}
var p1 =  createPerson('kenvin', 31),
    p2 =  createPerson('curry', 33);
  • 自定义构造函数模式
function Person(name, age) {
    this.age = age;
    this.name = name;
    this.setName = function(){
        this.name = name;
    };
}
var p1 =  new Person('kenvin', 31),
    p2 =  new Person('curry', 33),;
  • 构造函数+原型的组合模式
function Person(name, age) {
    this.age = age;
    this.name = name;
}
Person.prototype.setName = function(){
    this.name = name;
};
var p1 =  new Person('kenvin', 31),
    p2 =  new Person('curry', 33);
  • class类定义
class Person {
    constructor(name,age) {
	    this.name = name;
        this.age = age;
    }
    setName(){
        this.name = name;
    }
}
var p1 =  new Person('kenvin', 31),
    p2 =  new Person('curry', 33);

继承模式

  • 原型链继承
    • 定义父类型的构造函数
    • 给父类型的原型添加方法
    • 定义子类型的构造函数
    • 创建父类型的对象赋值给子类型的原型
    • 将子类型原型的构造属性设置为子类型
    • 给子类型原型添加方法
    • 创建子类型的对象:可以调用父类型的方法
    • 关键在于子类型的原型为父类型的一个实例对象
// 父类型
function Supper(){
    this.supProp = 'Supper property'; 
}
Supper.proptotype.showSupperProp = function() {
    console.log(this.supProp);
};
// 子类型
function Sub(){
	this.subProp = 'Sub property';
}

/* 为了继承,让Sub的实例能使用Supper中的showSupperProp方法,
   就需要让子类型Sub的原型为父类型Supper的一个实例对象
 */
var sub = new Sub();
// 子类型Sub的原型为父类型Supper的一个实例对象,注意这里的Sub的constructor属性是父类型Supper的constructor
Sub.proptotype = new Supper();
// 让子类型的constructor设置为原来的	
Sub.proptotype.constructor = Sub;
Sub.proptotype.showSubProp = function() {
    console.log(this.subProp);
};
sub.showSupperProp();
  • class中的extends继承(参考ES新特性)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值