由echarts想到的js中的時間類型
阿新 • • 發佈:2017-10-11
person poi foo lin anim 求值 www echarts 觸發
在工作中使用echarts時,偶然發現折線圖中對時間類型變量的用法:
now前面的+號何解?
now = new Date(+now + oneDay);
後來查閱資料,看到一篇博客,解釋如下:
這是對後面的對象做一個+運算,觸發對象執行valueOf進行求值!
而Date實例的valueOf返回它的毫秒數,大家可以嘗試如下代碼:
var now = new Date, time = now.getTime();
console.log(time==now.valueOf());//true
console.log(time==+now);//true
再舉個例子:
function person() {
}
person.prototype.valueOf = function () {
return "miaoying";
}
var foo = new person();
console.log("hello " + foo);//這裏將輸出字符串"hello miaoying"
console.log("hello " + foo.valueOf());//這裏將輸出字符串"hello miaoying"
echarts中的代碼如下:
function randomData() {
now = new Date(+now + oneDay);
value = value + Math.random() * 21 - 10;
return {
name: now.toString(),
value: [
[now.getFullYear(), now.getMonth() + 1, now.getDate()].join(‘/‘),
Math.round(value)
]
}
}
var data = [];
var now = +new Date(1997, 9, 3);
var oneDay = 24 * 3600 * 1000;
var value = Math.random() * 1000;
for (var i = 0; i < 1000; i++) {
data.push(randomData());
}
option = {
title: {
text: ‘動態數據 + 時間坐標軸‘
},
tooltip: {
trigger: ‘axis‘,
formatter: function (params) {
params = params[0];
var date = new Date(params.name);
return date.getDate() + ‘/‘ + (date.getMonth() + 1) + ‘/‘ + date.getFullYear() + ‘ : ‘ + params.value[1];
},
axisPointer: {
animation: false
}
},
xAxis: {
type: ‘time‘,
splitLine: {
show: false
}
},
yAxis: {
type: ‘value‘,
boundaryGap: [0, ‘100%‘],
splitLine: {
show: false
}
},
series: [{
name: ‘模擬數據‘,
type: ‘line‘,
showSymbol: false,
hoverAnimation: false,
data: data
}]
};
參考:http://www.cnblogs.com/Raoh/p/4212075.html
由echarts想到的js中的時間類型