Javascript 现代化与视频。h264
我在看Modernizer如何检测到对的支持,但对我来说没有任何意义。Javascript 现代化与视频。h264,javascript,video,h.264,modernizr,Javascript,Video,H.264,Modernizr,我在看Modernizer如何检测到对的支持,但对我来说没有任何意义。bool不是一个基本布尔值吗?为什么它会变成布尔对象?为什么bool.h264神奇地开始有任何意义?谢谢 tests['video'] = function() { var elem = document.createElement('video'), bool = false; // IE9 Running on Windows Server SKU can caus
bool
不是一个基本布尔值吗?为什么它会变成布尔对象?为什么bool.h264神奇地开始有任何意义?谢谢
tests['video'] = function() {
var elem = document.createElement('video'),
bool = false;
// IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
try {
if ( bool = !!elem.canPlayType ) {
bool = new Boolean(bool);
bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
// Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
}
} catch(e) { }
return bool;
};
实际上我写了大部分的测试
这正是Modernizer为检测子值所遵循的格式。在JavaScript中,一切都是对象,新的布尔值也是对象 最初
bool
实际上是一个基本布尔值,不能添加属性。在if
条件之后,bool
的值通过new Boolean(bool)
被覆盖。在Javascript中,对函数调用new,创建一个空对象,并将该函数用作所述对象的构造函数。对于Boolean()
构造函数,对象中唯一值得注意的添加是valueOf()
函数,该函数返回原始原语值。否则,您现在有了一个可以添加任意属性的普通对象
还有。Patrick,我相信这是可行的,但我可以请你详细说明发生了什么。是的,我可能不是这个星球上最大的javascript专家。例如,该函数可以返回bool一个基元类型或bool一个具有子属性的布尔包装对象。在这种情况下,bool.h264将毫无意义。或者你是说人们在尝试Modernizer.video.h264之前应该先检查Modernizer.video是否正确?困惑的有注释的现代化者这样的东西吗?谢谢你的回答。我想把这两个答案都标为好答案,但显然这样做不会让我这么做。