我意识到这是一个糟糕的头衔,但这是我能想到的最好的,让我看看能否解释一下:
我有一个图表,由于图表和数据的性质,我使用两个函数并隐藏div。除了这两个功能,我还有两种不同类型的图表(烛台和线条)。我需要能够让某人设置图表的“类型”(蜡烛或线条),然后能够在“类型”保持不变的情况下更改图表的时间段。
到目前为止,我倾向于使用全局“类型”变量但我明白使用全局不是一种很好的做法,即使它不起作用,它也不会是正确的解决方案)。代码基本上是这样的:
type = 'line';
function makeDayChart(type, days){
if(type == 'line'){
*make line chart*
} else {
*make candle chart*
}
}
function makeHourChart(type, hours){
if(type == 'line'){
*make line chart*
} else {
*make candle chart*
}
}
这种方法对我来说有点道理,但我知道不是这样做的。我一直在努力研究这种方法,但今天一直无法找到任何东西,如果你知道任何关键词或任何适用的东西我会很感激。
这是一个jsbin,它显示了我为此而提出的代码,它显然不起作用,但是......它是一些东西。
感谢您花时间阅读本文。
http://jsbin.com/nusufohosi/1/edit?html,js,console,output
考虑到@ magreenberg的回答,我试图实现它。这是一个更新:
答案 0 :(得分:1)
听起来你正在寻找的是一个构造函数。 JS构造函数是JS与类最接近的东西。例如,您有一个构造函数,用于构建图形并保存其所有属性
// SETUP Chart constructor function
function Chart(type, time){
this.type = type;
this.time = time
}
Chart.prototype.buildChart = function(){
if (this.time === "hour"){
if (this.type === "line"){
// build hour line chart
} else if(this.type ==="candle"){
// build hour candle chart
}
} else if (this.time === "days"){
if (this.type === "line"){
// build days line chart
} else if(this.type ==="candle"){
// build days candle chart
}
}
}
// Instantiate new object
var chartA = new Chart("line", "days");
var chartB = new Chart("chandle", "hours");
// call graph function to build object
chartA.buildChart();
chartB.buildChart();
构造函数很难理解。特别是在原型链接方面。希望这能让你开始朝着正确的方向前进。