html js sub函数是什么,什么是javascript继承?

JavaScript继承:子类可以使用父类的所有功能,并且对这些功能进行扩展。继承的过程,就是从一般到特殊的过程。

f8d3f034a50f73d9f0248ab377c4d978.png

JavaScript类继承:// 父类

var supperClass = function() {

var id = 1;

this.name = ['js'];

this.superVal = function() {

console.log('supreVal is true');

console.log(id);

}

}

// 父类添加共有方法

supperClass.prototype.getSupperVal = function () {

return this.superVal();

}

// 子类

var subClass = function() {

this.subVal = function() {

console.log('this is subVal')

}

}

// 继承父类

subClass.prototype = new supperClass();

// 子类添加共有方法

subClass.prototype.getsubVal = function() {

return this.subVal();

}

var sub = new subClass();

sub.getSupperVal(); //superValue is true

sub.getsubVal(); //this is subValue

console.log(sub.name);

sub.name.push('java'); //["javascript"]

var sub2 = new subClass();

console.log(sub2.name); // ["js", "java"]

其中最核心的一句代码是SubClass.prototype = new SuperClass() ;

936dce805e79dc0a7417abf9c1becb4a.png

将原型__proto__ 指向了父类的原型对象。这样子类就可以访问父类的public 和protected 的属性和方法,同时,父类中的private 的属性和方法不会被子类继承。

缺点:

如上述代码的最后一段,使用类继承的方法,如果父类的构造函数中有【引用类型】,就会在子类中被所有实例共用,因此一个子类的实例如果更改了这个引用类型,就会影响到其他子类的实例。

JavaScript构造函数继承

正式因为有了上述的缺点,才有了构造函数继承,构造函数继承的核心思想就是SuperClass.call(this,id),直接改变this的指向,使通过this创建的属性和方法在子类中复制一份,因为是单独复制的,所以各个实例化的子类互不影响。但是会造成内存浪费的问题var parentClass = function(name, id) {

this.name = name;

this.id = id;

this.getName = function(){

console.log(this.name)

}

}

parentClass.prototype.show = function( ) {

console.log(this.id)

}

var childClass = function(name, id) {

parentClass.call(this, name, id);

}

var subClass = new childClass('zjj', 10);

576ac456fde3012c5d4bcccccc86ff3b.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值