JS 時間對象、引用類型

基礎類型有哪些?復雜類型有哪些?有什么特征?

  • 基本類型:指的是保存在棧內(nèi)存中的簡單數(shù)據(jù)段,包括---數(shù)值,字符串,布爾值,null,undefined
  • 引用類型:指保存在堆內(nèi)存中的數(shù)據(jù),變量中只保存堆內(nèi)存的地址,包括---對象,數(shù)組,函數(shù),正則
  • 特征:引用類型可以多個變量共享一組數(shù)據(jù),因此改變數(shù)據(jù)時可能會影響到不止一個變量

如下代碼的輸出? 為什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);

輸出

false
Object {a: 1, b: 2}
true
  • 變量obj1和變量obj2都開辟了內(nèi)存空間存放數(shù)據(jù),所以內(nèi)存地址不同,obj1內(nèi)保存的地址不等于obj2內(nèi)保存的地址;
  • 將obj2的地址賦值給obj1,然后打印對象
  • 此時obj1內(nèi)的地址等于obj2內(nèi)的地址

代碼題

  • 寫一個函數(shù)getIntv,獲取從當前時間到指定日期的間隔時間
function getIntv(str){
    var ms1=Date.parse(str);
    var now=new Date();
    var ms2=now.getTime();
    var abs=Math.abs(ms2-ms1);
    // var d=new Date(abs);
    abs=Math.floor(abs/1000);
    var day=Math.floor(abs/86400);
    abs=abs%86400;
    var hour=Math.floor(abs/3600);
    abs=abs%3600;
    var min=Math.floor(abs/60);
    abs=abs%60;
    var sec=abs;
    var d="距離"+str+" "+day+"天"+hour+"小時"+min+"分鐘"+sec+"秒";
    return d;
  }
  var str = getIntv("2016-01-08");
  console.log(str);
  • 把數(shù)字日期改成中文日期
function getChsDate(str){
    var chs=["零","一","二","三","四","五","六","七","八","九",
    "十","十一","十二","十三","十四","十五","十六","十七","十八",
    "十九","二十","二十一","二十二","二十三","二十四","二十五",
    "二十六","二十七","二十八","二十九","三十","三十一"];
    var date=new Date(str);
    var year=new String(date.getFullYear());
    var month=new String(date.getMonth()+1);
    var day=new String(date.getDate());
    var chsYear='';
    var chsMonth;
    var chsDay;
    for(var i=0;i<year.length;i++){
      chsYear+=chs[year[i]];
    }
    chsMonth=chs[month];
    chsDay=chs[day];
    var chsDate=chsYear+"年"+chsMonth+"月"+chsDay+"日";
    return chsDate;
  }
  var str = getChsDate('2015-01-08');
  console.log(str);
  • 寫一個函數(shù)獲取n天前的日期
function getLastNDays(num){
    var ms1=num*24*3600*1000;
    var now=Date.now();
    var ms2=now-ms1;
    var date=new Date(ms2);
    var date2=date.toLocaleDateString();
    return date2;
  }
  var lastWeek =  getLastNDays(7);
  var lastMonth = getLastNDays(30);
  console.log(lastWeek);
  • 完善如下代碼,用于獲取執(zhí)行時間
var Runtime = (function(){
    var t1,t2,t3;
    var obj = {
        start: function(){
          t1=Date.now();
        },
        end: function(){
          t2=Date.now();
        },
        get: function(){
          t3=t2-t1;
          return t3;
        }
    };
  return obj;
  }());
  Runtime.start();
  for(var i=0;i<1000;i++){
    console.log('test');
  }
  Runtime.end();
  console.log(  Runtime.get() );
  • 樓梯有20級,每次走1級或是2級,從底走到頂一共有多少種走法?用代碼(遞歸)實現(xiàn)
function fn(num){
    if(num===1){
      return 1;
    }else if(num===2){
      return 2;
    }else{
      return fn(num-1)+fn(num-2);
    }
  }
  • 寫一個json對象深拷貝的方法,json對象可以多層嵌套,值可以是字符串、數(shù)字、布爾、json對象中的任意項
function deepCopy(oldObj){
    var newObj = {};
    for(var key in oldObj) {
      if(typeof oldObj[key] === 'object') {
        newObj[key] = deepCopy(oldObj[key]);
      }else{
        newObj[key] = oldObj[key];
      }
    }
    return newObj;
  }

另外一種方法 (JSON)

function deepCopy(oldObj){
    var newObj=JSON.parse( JSON.stringify(oldObj) );
    return newObj;
  }

本教程版權(quán)歸饑人谷和作者所有,轉(zhuǎn)載須說明來源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容