我在几个页面中看过几次JavaScript代码:
<script>
document.write('<script src=js/vendor/'
+ ('__proto__' in {} ? 'zepto' : 'jquery')
+ '.js><\/script>');
</script>
我想知道它究竟是做什么的。我想这包括jquery和zepto库。
答案 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。