1. 程式人生 > >由echarts想到的js中的時間類型

由echarts想到的js中的時間類型

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中的時間類型