全国服务热线:400-6263-705

位置:成都粤嵌教育IT技术培训机构 > 学校动态 > Script中构造函数继承父类属性

Script中构造函数继承父类属性

来源:成都粤嵌教育IT技术培训机构时间:2022/5/19 11:16:53

  在ES6之前,JavaScript中并没有extends继承,如果要实现继承的效果,可以通过构造函数和原型对象来模拟实现。本节将会讲解如何利用构造函数和原型对象实现继承。
  
  在ES6中,继承是通过定义两个类,然后子类用extends关键字继承父类。而在ES 6之前,只能用构造函数来代替类,在子类中利用call0方法将父类的this指向子类的this,这样就可以实现子类继承父类的属性。为了使读者更好地理解,下面我们通过代码进行演示。
  
  如果没有,再到Son原型对象中查找,如果仍然没有,再到Father原型对象中查找,一沿着原型链找到较后。由于Father原型对象中有一个money()方法,所以通过Son实例对象就继承了money()方法。
  

  不能直接将父类原型对象赋值给子类原型对象,这样会导致子类无法拥有自己的方法,在子类中添加的方法同时也会添加到父类中。下面我们通过代码演示这样一种错误的用法。


function Father() {}
Father.prototype.money = function() {
    console.log(100000),
};
function Son() {}
Son.prototype = Father.prototype;   //通过这种方式无法实现真正的继承
Son.prototype.exam = function() {}; //为子类增加方法的时候,会影响父类
console.log(Father.prototype.exam);    //可以看到父类也有了exam方法
  真正的继承是子类可以拥有自己的方法,并且当子类和父类的方法名相同时,子类方法可以覆盖父类方法。
  
  多学一招:class语法的本质
  
  ES 6提供了class语法用来定义类,但即使没有class语法,在JavaScript中可以用构造函数和原型对象的语法来替代。那么,class语法定义的类和构造函数有没有区别呢?下面我们通过代码进行测试。


class Person {}
console.log(Person.prototype);        //类也有原型对象
Person.prototype.money = function() { //类也可以增加方法
    console.log(100000);
};
new Person().money(); //输出结果:100000


领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/5730/news/527036/违者必究! 以上就是成都粤嵌教育IT技术培训机构 小编为您整理 Script中构造函数继承父类属性的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-705