• 关于js的几道经典题(作用域、原型链等)自己做的


    1、

    function test() {
    	var a = 1;
    	setTimeout(function() {
    		alert(a);
    		a = 3;
    	}, 1000);
    	a = 2;
    	setTimeout(function() {
    		alert(a);
    		a = 4;
    	}, 3000);
    }
     
    test();
    alert(0);
    

      考察的是延时问题,经常考的东西了。答案:0,2,3。不要问我为什么

    2、阿里的一道题,重在方法:

    当我们使用CSS3新属性,比如:box-shadow或者transition时,我们怎么检测浏览器是否支持这些属性?
    请设计一个JavaScript函数,该函数接受一个CSS属性名作为参数,并返回一个boolean值,表明浏览器是否支持这个属性。

      

    var supports = (function() {
       var div = document.createElement('div'),
          vendors = 'Khtml Ms O Moz Webkit'.split(' '),
          len = vendors.length;
     
       return function(prop) {
          if ( prop in div.style ) return true;
     
          prop = prop.replace(/^[a-z]/, function(val) {
             return val.toUpperCase();
          });
     
          while(len--) {
             if ( vendors[len] + prop in div.style ) {
                // browser supports box-shadow. Do what you need.
                // Or use a bang (!) to test if the browser doesn't.
                return true;
             }
          }
          return false;
       };
    })();
     
    if ( supports('textShadow') ) {
       document.documentElement.className += ' textShadow';
    }
    

      3、继续阿里题:

    1. alert(Function instanceof Object);
    2. alert(Object instanceof Function);

    首先要知道instanceof是什么意思,从本质上说,instanceof检查前面的对象的原型是否继承在后面的对象。

    Object, Function, Array等等这些都被称作是构造“函数”,他们都是函数。而所有的函数都是构造函数Function的实例。从原型链机制的的角度来说,那就是说所有的函数都能通过原型链找到创建他们的Function构造函数的构造原型Function.protorype对象,所以:
    alert(Object instanceof Function);// return true
    与此同时,又因为Function.prototype是一个对象,所以他的构造函数是Object. 从原型链机制的的角度来说,那就是说所有的函数都能通过原型链找到创建他们的Object构造函数的构造原型Object.prototype对象,所以:
    alert(Function instanceof Object);// return true

    有趣的是根据我们通过原型链机制对instanceof进行的分析,我们不难得出一个结论:Function instanceof Function 依然返回true, 原理是一样的

    1. Function是构造函数,所以它是函数对象
    2. 函数对象都是由Function构造函数创建而来的,原型链机制解释为:函数对象的原型链中存在Function.prototype
    3. instanceof查找原型链中的每一个节点,如果Function.prototype的构造函数Function的原型链中被查到,返回true

    因此下面代码依然返回true
    alert(Function instanceof Function);// still true
    结论

      • 在JavaScript语言中,一切的一切都是对象,它们全部继承自Object. 或者说所有对象的原型链的根节点都是Object.prototype
      • 理解原型链机制在JavaScript中式如何工作的是非常重要的。掌握了它,不管一个对象多么复杂,你总能够轻而易举地将它攻破。

      

  • 相关阅读:
    (转)深入理解JavaScript 模块模式
    (转)Javascript匿名函数的写法、传参、递归
    (转)javascript匿名函数的写法、传参和递归
    (转)初探Backbone
    (转)android平台phonegap框架实现原理
    (转)PhoneGap工作原理及需改进的地方
    (转)JQM 日期插件 mobiscroll Demo
    (转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明
    [题解] [笔记]期望&洛谷P3232
    [笔记] [题解] 状压$DP$&洛谷P1433
  • 原文地址:https://www.cnblogs.com/dunken/p/4362081.html
Copyright © 2020-2023  润新知