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原型

你可能感兴趣的:(JavaScript-原型)