这里有什么问题?如果我像这样宣布
,会有什么不同mat.prototype = function discountedMat(){
}
function mat(brick,sand,water) {
this.mat = brick;
this.sand = sand;
this.water = water;
var cal = function(){
return this.mat * this.sand * this.water;
};
}
var material = new mat(44,2,9);
console.log(material.cal());
答案 0 :(得分:1)
如果您问为什么material.cal()
失败,
这是因为,
var cal = function(){
cal
只是mat
函数中的局部变量,它不会在使用mat
函数构造函数创建的对象中公开。要解决此问题,请将函数定义添加到当前对象,如此
this.cal = function(){
将方法定义为原型的一部分通常是好的和有效的,比如
mat.prototype.cal = function() {
...
}
因为,每次调用函数构造函数时都不必创建函数对象。
答案 1 :(得分:1)
您刚刚在cal
函数中声明了一个局部变量mat
。
通常的做法是在函数的prototype
上声明它。
function mat(brick,sand,water) {
this.mat = brick;
this.sand = sand;
this.water = water;
}
mat.prototype.cal = function(){
return this.mat * this.sand * this.water;
};
答案 2 :(得分:0)
试试此代码:Fiddle
JS:
function mat(brick,sand,water) {
this.mat = brick;
this.sand = sand;
this.water = water;
this.cal = function(){
return this.mat * this.sand * this.water;
};
}
var material = new mat(44,2,9);
console.log(material.cal());