Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 现代化与视频。h264_Javascript_Video_H.264_Modernizr - Fatal编程技术网

Javascript 现代化与视频。h264

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

我在看Modernizer如何检测到对的支持,但对我来说没有任何意义。
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是否正确?困惑的有注释的现代化者这样的东西吗?谢谢你的回答。我想把这两个答案都标为好答案,但显然这样做不会让我这么做。