JavaScript指令的含义

时间:2013-12-24 13:45:24

标签: javascript

我在几个页面中看过几次JavaScript代码:

<script>
      document.write('<script src=js/vendor/'
        + ('__proto__' in {} ? 'zepto' : 'jquery')
        + '.js><\/script>');
    </script>

我想知道它究竟是做什么的。我想这包括jquery和zepto库。

4 个答案:

答案 0 :(得分:4)

此代码似乎检查对象上是否存在__proto__,如果可用则检查Zepto,否则检查jQuery。 Zepto喜欢保持他们的代码库很小,因此只能真正支持现代浏览器。

根据this(在浏览器端javascript 部分下),所有浏览器都不支持__proto__

答案 1 :(得分:1)

它检查浏览器是否有__proto_作为其对象的一部分,如果是,则包含zepto.js,否则它包括jquery.js我相信__proto__支持{}所有主流浏览器,但可能会有一些边缘情况

我所知道的唯一不支持__proto__的浏览器是IE&lt; = 8和Opera

答案 2 :(得分:1)

有些浏览器(例如IE10-)不支持Zepto

所以此语句检查是否为浏览器定义了__proto__,如果没有,则fallback to jQuery

答案 3 :(得分:0)

{}在Javascript中声明一个新对象,大部分等于new Object()

in运算符检测右操作数是否具有成员(函数,属性等)。

Zepto是轻量级的,与jQuery具有相同的API,但它只支持现代浏览器。在像IE6这样的旧浏览器中,不支持__proto__,因此它会回溯到jQuery以实现兼容性。如果浏览器支持此功能,则会加载Zepto。