JavaScript个人笔记:面向对象设计二(继承)

一:功能函数及构造器函数
功能函数:a)通过调用功能函数,会在堆中动态创建一块空间闭包,执行完毕后把结果return出去,空间自动回收。b)功能函数注重的是函数的功能和结果。

function person(){
    return '小王';
}
var res = person();
构造器函数:a)new关键字代表的是动态的开辟一块内存。
          b)空间,并且把这块空间的内存地址返回出去,我们的目标其实就是操作这块新的内存
function Person(name){
    this.name = name;
}
Person.prototype = {
    eat : function(){
        console.log('吃');
    }
}
var p = new Person('小王'):
p.eat();

二、构造函数的继承
//面向对象的编程指的是组织业务逻辑的代码操作的都是对象

Object.prototype.extends = function(func,action){
    for(var prop in func.prototype ){
        this.prototype[prop] = func.prototype[prop];
    }
    for(var prop in action){
        this.prototype[prop] = action[prop];
    }
}
function Person(name){
    this.name = name;
}
Person.prototype = {
    getHand : function(person){
        console.log(this.name+"牵着"+person.name);
    },
    eat:function(rice){
        console.log(this.name+"正在吃"+rice.name+"..");
    },
    study:function(){
        console.log(this.name+"学习");
    },
    wtv:function(tv){
        console.log(this.name+"看"+tv);
    }

}
function Son(name){
    this.name = name;
}
Son.extends(Person);
function Father(name){
    this.name = name;
}
Father.extends(Person,{
    carry:function(person){
        console.log(this.name+"背着"+person.name+"回家");
    }
})
function Mother(name){
    this.name = name;
}
Mother.extends(Person,{
    sleep : function(person){
        console.log(this.name+"抱着"+person.name+"睡觉");
    }
})
function Rice(name){
    this.name = name;
}
var f = new Father('小头爸爸');
var s = new Son('大头儿子');
var m = new Mother('围裙妈妈');
f.getHand(s);
s.eat(new Rice('蛋炒饭'));
f.carry(s);
s.study();
s.wtv('黑猫警长');
f.wtv('足球');
m.sleep(s);

内存图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值