19、时间对象,引用类型

1、基础类型有哪些?复杂类型有哪些?有什么特征?

  • 基本类型:number,boolean,null,undefined等可以直接保存在栈内存中的数据段。
  • 复杂类型:对象,数组,函数,正则表达式。变量保存的是一个指针,也就是对象的储存地址。

2、如下代码的输出? 为什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);//false,obj1与obj2是两个不同的对象,储存在不同的位置,因此判定为不想等,也就是地址不同。
console.log(obj1 = obj2);//Object {a: 1, b: 2},将obj2的地址赋给obj1,此时obj1的指针指向obj2储存的地址。
console.log(obj1 == obj2);//true,obj1与obj2的指针指向同一个地址,因此相等。

3、写一个函数getIntv,获取从当前时间到指定日期的间隔时间

var str = getIntv("2016-01-08");
console.log(str); // 距除夕还有 20 天 15 小时 20 分 10 秒
function getIntv(data){
    var target=Date.parse(data);
    var today=Date.now();
    var diff=target-today;

    var getSecends=Math.floor( diff/1000);
    var secends=getSecends%60;
    var minutes=((getSecends-secends)/60)%60;
    var hours=((getSecends-secends-(minutes*60))/3600)%24;
    var days=(getSecends-secends-(minutes*60)-(hours*3600))/(3600*24);
    console.log("距除夕还有" +days+"天" +hours+"小时"+ minutes+"分" +secends +"秒");

}

4、把数字日期改成中文日期

var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
function getChsDate(data){
    var date=data.split("-");
    var a=['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七',
      '十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']

    var year=a[date[0][0]] + a[date[0][1]]+ a[date[0][2]]+ a[date[0][3]];
    var month=a[date[1]] ;
    var day=a[date[2]] ;
    
    var ChsDate=year+"年"+month+"月"+day+"日";
    console.log(ChsDate);

}

5、写一个函数获取n天前的日期

var lastWeek = getLastNDays(7); // ‘2016-01-08’
var lastMonth = getLastNDays(30); //'2015-12-15'
function getLastNDays(num){
    var today=Date.now();
    var des=today-num*24*3600*1000;
    var bofroe= new Date(des).toUTCString();
    console.log(before);

}

6、完善如下代码,用于获取执行时间如:

 var Runtime = (function(){
var startTime,endTime,getTime;
 var obj = {
 start: function(){
 startTime = new Date.now//code here ..., 当前时间
 },
 end: function(){
 endTime = new Date.now //code here ... 结束时间
 },
 get: function(){
getTime = endTime-startTime //code here ... 获取执行时间
 }
 };
return obj;
}());
Runtime.start();
//todo somethint
Runtime.end();
console.log( Runtime.get() );

7、楼梯有200级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现

function method(num){
    if (num==1){
        return 1;
    }
    else if(num==2){
        return 2;
    }
    else {
        return method(num-1)+method(num-2);
    }
}

8、写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项

function deepCopy(obj){
    var newObj={};
    for(var key in obj){
        if(typeof obj[key]==="object"){
            newObj[key]=deepCopy(obj[key]);
        }
        else{
            newObj[key]=obj[key];
        }
    }
    return newObj;
}

你可能感兴趣的:(19、时间对象,引用类型)