Js面向对象继承

面向对象编程

JavaScript是一个不完全面向对象的弱类型语言,它里面的数据都可以看成对象。JavaScript是通过原型(prototype)来实现面向对象编程。

继承

只有new的实例化对象才能拿到构造函数的所有的方法,包括原型对象上的。

  • 使用原型继承,缺点把私有的(构造函数内部定义的)和公共的(原型对象上定义的)全部放在了子构造函数的原型对象
function Person(){
    this.name='小明';
}
function Study(){
    this.gender='男'
}
Person.prototype=new Study();
var res=new Person();
console.log(res.gender)
  • 使用call/apply继承,缺点只能拿到构造函数内部定义的属性和方法,拿不到原型上的属性方法。
function Person(){
    Study.call(this)
    this.name='小明';
}
function Study(){
    this.gender='男'
}
Study.prototype.age=123
var res=new Person();
console.log(res,Study.prototype)
  • 利用空对象作为中介继承
function Person(){
    this.name='小明';
}
function Study(){
    this.gender='男'
}
Study.prototype.age=12
function F(){};
F.prototype=Study.prototype;
Person.prototype=new F();
var res=new Person();
console.log(res.age)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容