javascript对象不起作用

时间:2013-12-24 06:48:36

标签: javascript

这里有什么问题?如果我像这样宣布

,会有什么不同
mat.prototype = function discountedMat(){

}

http://jsfiddle.net/Tu8tS/

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());

3 个答案:

答案 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());