時間對象,引用類型

基礎(chǔ)類型有那些?復(fù)雜類型有那些?有什么特征?

  • 基礎(chǔ)類型:number,boolean,string,null,undefined。
    保存在棧內(nèi)存中的簡單數(shù)據(jù),基本類型的值儲存在變量本省之中。
  • 復(fù)雜類型:對象,數(shù)組,函數(shù),正則。
    保存在堆內(nèi)存中的對象,變量本身儲存的是一個指針(可以理解為地址),指針指向保存在堆內(nèi)存中的對象。
//基本類型
var a = 1;
var b = a;
a = 2;
console.log(a); //2
console.log(b); //1
//復(fù)雜類型
var obj1 = {name : "xiaoming", age : 18 };
var obj2 = obj1;
obj1.age = 28;
console.log(obj2); //Object {name : "xiaoming", age : 28 } 

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

var obj1 = {a:1,b:2};
var obj2 = {a:1,b:2};
console.log(obj1 == obj2);  //false
console.log(obj1 = obj2);  //{a:1,b:2}
console.log(obj1 == obj2);  //true
  • 將一個對象復(fù)制給變量時,變量中只是存儲了指針,obj1和obj2中的對象雖然相等,但是指針并不是相同,所以返回false。
  • 將obj2賦值給obj1,只是將指針賦值給了obj1,最后返回的是obj2的對象。
  • 此時兩個變量儲存的指針已經(jīng)相等,所以返回true。

代碼

寫一個函數(shù)getIntv,獲取從當(dāng)前時間到指定日期的間隔時間

function getIntv(str){
 var distence = Date.parse(str) - Date.now();
 var day = Math.floor(distence/1000/3600/24);
 var hour = Math.floor((distence/1000-day*3600*24)/3600);
 var min = Math.floor((distence/1000-day*3600*24-hour*3600)/60);
 var sec = Math.ceil(distence/1000-day*3600*24-hour*3600-min*60);
 return "距離2017年春節(jié)還有" + day + "天" + hour + "小時" + min + "分" + sec + "秒";
}
var str = getIntv("2017-1-17");
console.log(str);

把數(shù)字日期改成中文日期

function getChsDate(str){
  var date = new Date(str);
  var year = date.getFullYear().toString(),
      month = date.getMonth(),
      day = date.getDate();
  var arr = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三',
  '十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四',
  '二十五','二十六','二十七','二十八','二十九','三十','三十一'];
  var chsYear = "";
  for (var i = 0; i < year.length; i++) {
    chsYear += arr[year[i]];
  }
  chsDate = chsYear + "年" + arr[month + 1] + "月" + arr[day] + "日";
  return chsDate;
}
var str = getChsDate('2016-7-26');
console.log(str);

寫一個函數(shù)獲取n天前的日期

function getLastNDays(val){
  var lastNDays = new Date(Date.now()-val*24*3600*1000);
  var str = lastNDays.getFullYear() + "-" + lastNDays.getMonth() + "-" + lastNDays.getDate();
  return str
}
var lastWeek = getLastNDays(7);
console.log(lastWeek);
var lastMonth = getLastNDays(30);
console.log(lastMonth);

完善如下代碼,用于獲取執(zhí)行時間

var RunTime =(function() {
  var startTime, endTime;
  return {
    start:function(){
      startTime = Date.now();
    },
    end:function(){
      endTime = Date.now();
    },
    get:function(){
      return endTime - startTime;
    }
  };
}());
RunTime.start();
for (var i = 0; i < 10000; i++) {
  console.log(i);
}
RunTime.end();
console.log( RunTime.get() );

樓梯有200級,每次走1級或是2級,從底走到頂一共有多少種走法?用代碼(遞歸)實現(xiàn)

function fn(num){
  var res = 0;
  if (num===1) {
    res = 1;
  }else if (num===2) {
    res = 2;
  }else {
    res = fn(num-1)+fn(num-2);
  }
  return res;
}
fn(200);

寫一個json對象深拷貝的方法,json對象可以多層嵌套,值可以是字符串、數(shù)字、布爾、json對象中的任意項

var json = {
  "name" : "xiaoming",
  "sex" : "male",
  "age" : 25,
  "friends" : {
    "xiaohong" : {
      "sex" : "female",
      "age" : 25
    },
    "xiaoli" : {
      "sex" : "male",
      "age" : 25
    }
  }
}

function copyJson(json){
 var copy= {};
 for (var i in json ) {
   if (typeof json[i] === "object") {
     copy[i] = copyJson(json[i]);
   }else {
     copy[i] = json[i];
   }
 }
 return copy;
}
var json2 = copyJson(json);

console.log(json2);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答 基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征?答:基礎(chǔ)類型:數(shù)字number字符串string布爾值boole...
    饑人谷_桶飯閱讀 299評論 0 0
  • 問答 1. 基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 基礎(chǔ)類型:基礎(chǔ)類型(數(shù)值,字符串,布爾值,null,un...
    進擊的阿群閱讀 366評論 0 0
  • 基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征?5種簡單數(shù)據(jù)類型(基本數(shù)據(jù)類型):Undefined、Null、Boo...
    coolheadedY閱讀 329評論 0 0
  • 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 基礎(chǔ)數(shù)據(jù)類型:指的是簡單的數(shù)據(jù)段 在JavaScript中有五種...
    饑人谷區(qū)子銘閱讀 269評論 0 1
  • 做什么要一直要做,不要停下來胡思亂想,只有你不斷地做,時間才會被利用。
    Kujesus閱讀 309評論 0 0