事件对象、引用类型

问题

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

一、布尔、字符串、数字、null、undefined、对象、还有复杂类型。
二、复杂类型就是:对象、数组、函数、正则
三、特征:记住数据类型就是保存栈内存中的简单数据,而复杂类型基本上都是对象,是以指针的形式存储数据的,变量自身只存储一个地址信息。


a、b就是简单数据类型的存储方式。obj1、obj2就是指针存储方式
a、b就是简单数据类型的存储方式。obj1、obj2就是指针存储方式
2、如下代码的输出? 为什么?
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2); // false 因为指针不同
console.log(obj1 = obj2); // Object {a: 1, b: 2} 赋值
console.log(obj1 == obj2); // true 指针相同了

代码

1. 写一个函数getIntv,获取从当前时间到指定日期的间隔时间
var str = getIntv("2016-01-08");
console.log(str); // 距除夕还有 20 天 15 小时 20 分 10 秒

// 答

       <script type="text/javascript">
        function getIntv(date){
            var t1=Date.parse(date);
            var t2=Date.now(); 
            var t3=(t1-t2)/1000;  
            var day=Math.floor(t3/(24*60*60));
            var hour=Math.floor(t3%(24*60*60)/(60*60));
            var month=Math.floor(t3%(60*60)/60);
            var sec=Math.floor(t3%60);
            return ('距离 '+'除夕'+' 还有 '+day+' 天 '+hour+' 时 '+month+' 分 '+sec+' 秒');
        }
        console.log(getIntv('2017-01-28'));

        </script>
2. 把数字日期改成中文日期
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日

// 答

<script type="text/javascript">
            function getChsDate(time) {
                var date = new Date(time);
                
                var year = date.getFullYear();
                var month = date.getMonth() + 1; //因为月份它也是用下标,所以要加一
                var day = date.getDate();
                

                function toCn(num) {
                    var newStr = '';
                    var str = num.toString();
                    
                    var arr = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
                    for(var i = 0; i < str.length; i++) {
                        newStr += arr[str[i]];
                    }
                    return newStr;
                }
                return toCn(year) + '年' + toCn(month) + '月' + toCn(day) + '日';
            }
            var str = getChsDate('2016-07-26');

            console.log(str);
        </script>
3. 写一个函数获取n天前的日期
var lastWeek = getLastNDays(7); // ‘2016-01-08’
var lastMonth = getLastNDays(30); //'2015-12-15'

//答

<script type="text/javascript">
            var lastWeek = getLastNDays(7); 
            var lastMonth = getLastNDays(30); 
            function getLastNDays(n) {
                var diff = Date.now() - n * 24 * 60 * 60 * 1000;
                var d = new Date(diff);
                var year = d.getFullYear();
                var month = d.getMonth() + 1;
                if(month < 10) {
                    month = '0' + month;
                }
                var date = d.getDate();
                if(date < 10) {
                    date = '0' + date;
                }
                return(lastNDays = year + '-' + month + '-' + date);
            }
        </script>
4. 完善如下代码,用于获取执行时间如:
<script type="text/javascript">
            var Runtime = (function() {
                var t1, t2, diff;
                return {
                    start: function() {
                        t1 = Date.now();
                    },
                    end: function() {
                        t2 = Date.now();
                    },
                    get: function() {
                        return(diff = t2 - t1);
                    }
                };
            }());
            Runtime.start();
            for(var i = 0; i < 1000; i++) {
                console.log(1);
            }
            Runtime.end();
            console.log(Runtime.get()); // 102
        </script>
5. 楼梯有200级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现
 function stairs(n){
         if(n === 1){
               return 1;
         }else if (n === 2){
               return 2;
         }else{
               return stairs(n-1) + stairs(n-2);
         }
 }
6. 写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项
var obj = {
     name: 'papapa',
     age:100,
     sex: 'male',
     firends: {
           name: 'hahaha',
           age:100,
           sex: 'Female',
     }
};
function deepCopy(obj){
      var newObj = {};
      for(var key in obj){
            if(isSimple(obj[key]) ){
                  newobj[key] = obj[key];
             }else of( isObj(obj[key]) ) {
                  newObj[key] = deepCopy(obj[key]);
             } else {
          newobj[key] = arrcopy(obj[key]);
           }
      }
      return newObj;
}
deepCopy(obj);
//这么来对不对?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,600评论 19 139
  • 投射每一天都是新的开始,每一天能量满满的,健康快乐幸福,坚强 投射爱自己,爱家人,更爱我的宝宝,一家人健康快乐,相...
    翟美丽阅读 1,027评论 0 0
  • 二三友,四五酒,醉过昏黄。 雨潲溅青坪,柴桑托旧城。 孤帆拾旅色,重影漏琴声。 秦岭分南北,乡愁乱角觥。 无言惜永...
    莫小北xm阅读 2,629评论 3 4
  • “大上海”歌舞厅是著名娱乐场所。大BOS秦五爷是风云人物,黑白两道无人敢轻易招惹。在那个年代,他的“大上海”竟然有...
    二王子阅读 3,237评论 3 0
  • 我的好友小李最近很郁闷,作为公司的优秀员工,薪资却已经两年没有增加了,下周他准备去找老板谈加薪事宜。他说谈不下来,...
    大头的美好时光阅读 4,140评论 0 1