原型
原型使用方式:
var Calculator = function (decimalDigits, tax) { this.number=number;
this.tax = tax;
};
通过给Calculator对象的prototype属性赋值,来设定Calculator对象的原型。
Calculator.prototype = { add: function (x, y) { return x + y; }, subtract: function (x, y) { return x - y; } }; var calculator = new Calculator(); conlose.log(calculator.add(1,3));//4
上面使用原型的时候,有一个限制就是一次性设置了原型对象,我们再来说一下如何设置原型的每个属性。
var Calculate = function () { //为每一个实力都声明一个数字 this.number = 2; }; Calculator.prototype .add=function(x, y){ return x + y; }; Calculator.prototype .subtract=function(x, y){ return x - y; };
先声明了一个Calculate对象,在构造函数里面初始化一个number属性,然后在原型属性里面设置了2个函数。
var Calculator = function () { //为每个实例都声明一个数字 this.numbers= 5; }; Calculator.prototype = new Calculate();
我们可以看到Calculator的原型是指向到Calculate的一个实例上,目的是让Calculator集成它的add(x,y)和subtract(x,y)这2个函数。
var calc = new Calculator(); alert(calc.add(1, 1)); //Calculate里声明的number属性,在 Calculator里是可以访问到的 alert(calc.number); //2
如果不想让Calculator访问Calculate的构造函数里声明的属性值number,可以将Calculate的原型赋给Calculator的原型,这样你在Calculator的实例上就访问不到那个number值了。
var Calculator = function () { this.tax= 5; }; Calculator.prototype = Calculate.prototype; var calc = new Calculator(); alert(calc.add(1, 1));//2 alert(calc.number);//undefined