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