javascript - 如何从自定义方法获取信息并将其应用到我的构造函数 javascript 中的另一个方法?

标签 javascript

好吧,我试图想一个很好的例子,所以我创建了一个关于贵金属的构造函数。构造函数采用金属类型和重量。我有两个方法。一种方法确定贵金属(黄金或白银)是否真实,另一种方法根据现货价格计算值(value)。 (我知道现货价格是错误的,无论如何这只是一个例子)。

假设一位顾客带来了一 block 银含量为 80% 的银币。因为它含有 80% 的银,所以我想将其应用到我的 metalValue 方法中。我该怎么做。

这是代码。 (JSFiddle 为您提供方便 http://jsfiddle.net/bwj3fv12/ )。 这将帮助我更好地理解构造函数。

HTML

<div id="testDiv">test Div</div>
<div id="testDiv2">test Div2</div> <br /><br />

JavaScript

var PreciousMetals = function(metal, weight){
    this.metal = metal;
    this.weight = weight;  //weight in ounces

    this.authentic = function(colorTest){
        var metalPurity;
        var zero = "";
        if (this.metal == "silver"){
            switch(colorTest){
                case "brightred":
                    metalPurity = 1;
                    break;
                case "darkred":
                    metalPurity = 0.925;
                    break;
                case "brown":
                    metalPurity = 0.80;
                    break;
                case "green":
                    metalPurity = 0.50;
                    break;
                default:
                    metalPurity = 0;
            }


        }else if(this.metal == "gold"){
            switch(colorTest){
               case "green":
                   metalPurity = "base metal or gold plated";
                   break;
               case "milk colored":
                   metalPurity = "gold plated sterling silver";
                   break;
               case "no color":
                   metalPurity = "real gold";
                   break;
               default:
                   metalPurity = "Could be a fake, try different test";
            }
        }
        return metalPurity;
    }

    this.metalValue = function(metal){
        var sum = 0;
        var spotPrice;
        if (this.metal == "gold"){
           spotPrice = 1000;
        }else if(this.metal == "silver"){
           spotPrice = 15;
        }
        sum = spotPrice * this.weight;
        return sum;        
    }
}


var customerCindy = new PreciousMetals("silver", 2);

document.getElementById('testDiv').innerHTML = customerCindy.authentic("brown");


document.getElementById('testDiv2').innerHTML = customerCindy.metalValue();  //The result I would like would be 24 of course.

现在我意识到我可以这样做:

document.getElementById('testDiv2').innerHTML = customerCindy.metalValue() * customerCindy.authentic("brown");

但是,这里的目标是从真实方法中获取信息,并使用它来帮助我计算 metalValue 方法中的金属值。

最佳答案

如果您希望在构造函数中将这两个方法的逻辑分开,则可以包含第三个方法来执行将两个结果相乘的任务。

var PreciousMetals = function(metal, weight){
    this.metal = metal;
    this.weight = weight;  //weight in ounces

    this.authentic = function(colorTest){
        var metalPurity;
        var zero = "";
        if (this.metal == "silver"){
            switch(colorTest){
                case "brightred":
                    metalPurity = 1;
                    break;
                case "darkred":
                    metalPurity = 0.925;
                    break;
                case "brown":
                    metalPurity = 0.80;
                    break;
                case "green":
                    metalPurity = 0.50;
                    break;
                default:
                    metalPurity = 0;
            }


        }else if(this.metal == "gold"){
           switch(colorTest){
                case "green":
                    metalPurity = "base metal or gold plated";
                    break;
                case "milk colored":
                    metalPurity = "gold plated sterling silver";
                    break;
                case "no color":
                    metalPurity = "real gold";
                    break;
                default:
                    metalPurity = "Could be a fake, try different test";
            }
        }
        return metalPurity;
    }

    this.metalValue = function(){
        var sum = 0;
        var spotPrice;
        if (this.metal == "gold"){
           spotPrice = 1000;
        }else if(this.metal == "silver"){
           spotPrice = 15;
        }
        sum = spotPrice * this.weight;
        return sum;        
    }

    this.netValue = function(colorTest){
        return this.authentic(colorTest) * this.metalValue();    
    }
}

这是一个正在运行的 JSFiddle - https://jsfiddle.net/bwj3fv12/

关于javascript - 如何从自定义方法获取信息并将其应用到我的构造函数 javascript 中的另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596315/

相关文章:

javascript - Spring MVC 应用程序不采用根上下文

javascript - 单击书签链接后打开弹出窗口

javascript - 使用 babel 时出现意外的保留字 'import'

javascript - 算法识别javascript中的纯函数

Javascript 命名空间和未定义函数

javascript - 将事件处理程序附加到函数

javascript - Framework7 .addView 不是函数

javascript - 在 react.js 中添加列值

javascript - ajaxslt 无法使用 XPATH 获取节点

javascript - 如何使用 Mongoose 查找子文档?