调用方法是给我代码而不是值(Javascript)

调用方法是给我代码而不是值(Javascript),javascript,object,methods,console,Javascript,Object,Methods,Console,基本上,我用一种方法创建了一个对象,该方法将对象中的几个属性添加到一起。但是,当我尝试将该方法调用到控制台日志时,它会向我发出代码(这是一个if语句),而不是我希望它返回的值,因此我感到困惑! 为什么会这样? 代码如下: var Granite = function(ty, gr, th, wi, le, ed, ad){ this.type = ty; this.group = gr; this.thickness = th; this.width = wi;

基本上,我用一种方法创建了一个对象,该方法将对象中的几个属性添加到一起。但是,当我尝试将该方法调用到控制台日志时,它会向我发出代码(这是一个if语句),而不是我希望它返回的值,因此我感到困惑! 为什么会这样? 代码如下:

var Granite = function(ty, gr, th, wi, le, ed, ad){
    this.type = ty;
    this.group = gr;
    this.thickness = th;
    this.width = wi;
    this.length = le;
    this.edgeProfile = ed;
    this.addOns = ad;
    this.groupPrice = function(){
        if (thickness === 20){
            switch(group)
            {
            case 1:
              return 160;
              break;
            case 2:
              return 194;
              break;
            case 3:
              return 244;
              break;
            case 4:
              return 288;
              break;
            case 5:
              return 336;
              break;
            case 6:
              return 380;
              break;
            default:
              return 380;
            }
        }else{
            switch(group)
            {
            case 1:
              return 200;
              break;
            case 2:
              return 242;
              break;
            case 3:
              return 305;
              break;
            case 4:
              return 360;
              break;
            case 5:
              return 420;
              break;
            case 6:
              return 475;
              break;
            default:
              return 475;
            }
        }   
    }
    this.price = function(){
        if(length <= 2000 && length > 1000){
            return ((edgeProfile + groupPrice)*2) - addOns;
        }else if(length <= 3000 && length > 2000){
            return ((edgeProfile + groupPrice)*3) - addOns;         
        }else if(length <= 4000 && length > 3000){
            return ((edgeProfile + groupPrice)*4) - addOns;         
        }else if(length <= 5000 && length > 4000){
            return ((edgeProfile + groupPrice)*5) - addOns;         
        }
    }
}

var granite1 = new Granite("Rosa Porrino", 1, 30, 400, 3200, 30.05, 86.18);

console.log(granite1.groupPrice);
var Granite=功能(ty、gr、th、wi、le、ed、ad){
this.type=ty;
本组=gr;
该厚度=th;
这个宽度=wi;
这个长度=le;
此.edgeProfile=ed;
this.addOns=ad;
this.groupPrice=函数(){
如果(厚度===20){
交换机(组)
{
案例1:
返回160;
打破
案例2:
返回194;
打破
案例3:
返回244;
打破
案例4:
返回288;
打破
案例5:
返回336;
打破
案例6:
返回380;
打破
违约:
返回380;
}
}否则{
交换机(组)
{
案例1:
返回200;
打破
案例2:
返回242;
打破
案例3:
返回305;
打破
案例4:
返回360;
打破
案例5:
返回420;
打破
案例6:
返回475;
打破
违约:
返回475;
}
}   
}
this.price=函数(){
如果(长度1000){
返回((edgeProfile+groupPrice)*2)-插件;
}如果有的话(长度2000){
返回((edgeProfile+groupPrice)*3)-插件;
}否则,如果(长度3000){
返回((edgeProfile+groupPrice)*4)-插件;
}else if(长度4000){
返回((edgeProfile+groupPrice)*5)-插件;
}
}
}
var granite1=新花岗岩(“Rosa Porrino”,1,30,400,3200,30.05,86.18);
console.log(granite1.groupPrice);

它将groupPrice方法中的完整if语句返回给我

如果您正在调用函数,请附加()否则您只是在引用该函数。

您不是在调用该方法,而是向控制台log()提供函数引用。在JavaScript中,需要使用“()”来调用函数

这肯定会起作用
console.log(granite1.groupPrice())

在这方面,价格

使用
this.groupPrice()
。而不是
groupPrice

修改了这个价格法

 this.price = function(){
        if(length <= 2000 && length > 1000){
            return ((this.edgeProfile + this.groupPrice())*2) - addOns;
        }else if(length <= 3000 && length > 2000){
            return ((this.edgeProfile + this.groupPrice())*3) - addOns;         
        }else if(length <= 4000 && length > 3000){
            return ((this.edgeProfile + this.groupPrice())*4) - addOns;         
        }else if(length <= 5000 && length > 4000){
            return ((this.edgeProfile + this.groupPrice())*5) - addOns;         
        }
    }
this.price=function(){
如果(长度1000){
return((this.edgeProfile+this.groupPrice())*2)-插件;
}如果有的话(长度2000){
return((this.edgeProfile+this.groupPrice())*3)-插件;
}否则,如果(长度3000){
return((this.edgeProfile+this.groupPrice())*4)-插件;
}else if(长度4000){
返回((this.edgeProfile+this.groupPrice())*5)-插件;
}
}

他也在试图从
price
打电话给
groupPrice
。是的,我不知道如何解决这个问题?@LukeTurnbull这与
控制台中的问题相同。log
。您没有调用该函数。Add
()
@LukeTurnbull我对此进行了更改。price方法我相信这会解决您的问题。@LukeTurnbull是的,您可以通过调用方法来调用方法中的方法;-)只要你能引用一个函数,你就可以通过附加
()
@Luke Turnbull来调用它。不用担心,我们都会犯学生错误。它伴随着长时间盯着同一个代码而来。顺便说一句,如果要返回,不需要中断switch语句。这是死代码。哦,这省去了一些打字!谢谢你,朋友。