javascript的类定义和基本继承

本文通过具体的JavaScript代码示例介绍了如何实现对象继承,包括父类的构造方法、私有和公有方法,以及子类的方法覆盖。展示了如何通过原型链实现继承并保持构造函数的正确指向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function baseClass(){// 父类 仿照实现了私有 和 公有 及 静态 方法
    var self = this;
    
    (function init(){//初始化 函数
        self.data1 = "data1";
        self.data2 = "data2";
    })();
    
    var interFun1 = function(){return "interFun1:" + self.data1;}; // 私有 方法
    
    self.fun1 = function(){console.log("fun1 " + interFun1());}; // 公有 方法
    self.fun2 = function(p){self.data2 = p; console.log("self.data2 " + self.data2);};
    
    baseClass.prototype.static1 = function(){console.log("static1");};//静态 方法
}

function subClass(){
    var self = this;

    (function init(){

        self.data1 = "subdata1";

       self.data3 = "data3";

    })();

    self.subFun1 = function(){ console.log("subFun1: self.data3:" + self.data3);};

    self.fun2 = function(p){ self.data2 = p + " new data2"; };

    subClass.prototype.static1 = function(){console.log("overwrite static1");};

}
subClass.prototype = new baseClass();
subClass.prototype.constructor = subClass;//由于上面的那行,会导致consturctor为baseClass,所以这里在恢复过来,这样,subClass的实例对象的constructor就是取默认的处理,也就是实例对象的constructor == subClass.prototype.constructor, 这样,我们可以统一的判断一个类型对象是属于哪个具体类型(见下一篇文章)

var sub1 = new subClass();
var sub2 = new subClass();

sub1.subFun1();

sub1.fun1();

sub1.fun2("sub1");
sub2.fun2("sub2");

console.log(sub1.data2 + ":" + sub2.data2); // 将输出 'sub1 new data2:sub2 new data2', 说明方法覆盖成功,并且对象之间方法的执行 是互不干涉的

sub1.static1();


console.log("+++++++++++++++++++++++++++++++++++++");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值