JavaScript-原型

JavaScript 不包含传统的类继承模型, 是唯一一个被广泛使用的基于原型继承的语言.类继承只需要继承即可,JavaScript实现继承稍微复杂一点.

继承代码:

var BaseCalculator = function() {
    this.decimalDigits = 2;
};

BaseCalculator.prototype = {
    add: function(x, y) {
        return x + y;
    },
    subtract: function(x, y) {
        return x - y;
    }
};

var Calculator = function () {
    //为每个实例都声明一个税收数字
    this.tax = 5;
};
        
Calculator.prototype = new BaseCalculator();

var calc = new Calculator();
console.log(calc.add(1, 1));
//BaseCalculator 里声明的decimalDigits属性,在 Calculator里是可以访问到的
console.log(calc.decimalDigits); 

如果关于想重复父类的add函数,直接在原型重写就行,代码:

Calculator.prototype = new BaseCalculator();

Calculator.prototype.add = function(x,y) {
    return x + y + this.tax;
}

var calc = new Calculator();
console.log(calc.add(1, 1));
//BaseCalculator 里声明的decimalDigits属性,在 Calculator里是可以访问到的
console.log(calc.decimalDigits); 

JavaScript中一个对象就是任何无序键值对的集合,如果它不是一个主数据类型(undefined,null,boolean,number,or string),那它就是一个对象.

  • 所有的对象都有"[[prototype]]"属性(通过proto访问),该属性对应对象的原型
  • 所有的函数对象都有"prototype"属性,该属性的值会被赋值给该函数创建的对象的"proto"属性
  • 所有的原型对象都有"constructor"属性,该属性对应创建所有指向该原型的实例的构造函数
  • 函数对象和原型对象通过"prototype"和"constructor"属性进行相互关联

本文只是皮毛,仅适用于了解,如果想深入,请详读参考链接.

参考链接
深入理解JavaScript系列(5):强大的原型和原型链
理解JavaScript原型
深入理解javascript原型和闭包(完结)
彻底理解JavaScript原型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 原型,作为前端开发者,或多或少都有听说。你可能一直想了解它,但是由于各种原因还没有了解,现在就跟随我来一起探...
    无亦情阅读 683评论 0 8
  • 一切皆对象 面向对象的一个重要观点是:一切皆对象如何做到这一点呢?如何建立继承体系呢?各种语言,C++、Java、...
    松哥888阅读 540评论 0 0
  • 请移步:https://blog.cdswyda.com/post/20161121
    依韵宵音阅读 381评论 0 17
  • 在JS中,原型链是一个重要的概念,不管是继承还是属性值的查找中,都用到了原型链的基本知识,有些朋友经常问我一些关于...
    彬_仔阅读 1,613评论 2 20
  • 作为一门被长期误解的编程语言,javascript一直被人所诟病.但是如果你真正的了解它之后,你会深深的爱上它. ...
    余歌_非鱼阅读 2,029评论 3 9