Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 object.constructor属性的问题 是否存在anyObject.constructor属性为null或未定义的可能性(尤其是在未修改/覆盖ConstructorFunc.prototype时) var-date=新日期();console.log(date.constructor)//记录“日期()”。好的 var数据=新数组(1,2,3);console.log(data.constructor)//它记录的内容类似于[undefined]。它是什么,为什么不是Array()_Javascript_Constructor - Fatal编程技术网

关于JavaScript object.constructor属性的问题 是否存在anyObject.constructor属性为null或未定义的可能性(尤其是在未修改/覆盖ConstructorFunc.prototype时) var-date=新日期();console.log(date.constructor)//记录“日期()”。好的 var数据=新数组(1,2,3);console.log(data.constructor)//它记录的内容类似于[undefined]。它是什么,为什么不是Array()

关于JavaScript object.constructor属性的问题 是否存在anyObject.constructor属性为null或未定义的可能性(尤其是在未修改/覆盖ConstructorFunc.prototype时) var-date=新日期();console.log(date.constructor)//记录“日期()”。好的 var数据=新数组(1,2,3);console.log(data.constructor)//它记录的内容类似于[undefined]。它是什么,为什么不是Array(),javascript,constructor,Javascript,Constructor,短暂性脑缺血发作 是的,您可以手动覆盖构造函数的原型对象的.constructor属性 似乎构造函数属性已更改。通常,您可能会看到类似于函数数组(){[native code]}的内容,而不是[undefined] 你可以做一件事来验证 console.log(typeof [].constructor); 它应该为您提供“函数”。如果它为您提供了“对象”,则它已被更改 不信任控制台输出 从评论中可以看出,您正在Firebug中进行测试 一般来说,不要太信任控制台日志记录。控制台是环境的附加

短暂性脑缺血发作

  • 是的,您可以手动覆盖构造函数的
    原型
    对象的
    .constructor
    属性

  • 似乎
    构造函数
    属性已更改。通常,您可能会看到类似于
    函数数组(){[native code]}
    的内容,而不是
    [undefined]

  • 你可以做一件事来验证

    console.log(typeof [].constructor);
    
    它应该为您提供
    “函数”
    。如果它为您提供了
    “对象”
    ,则它已被更改


    不信任控制台输出

    从评论中可以看出,您正在Firebug中进行测试

    一般来说,不要太信任控制台日志记录。控制台是环境的附加组件,必须解释提供给日志的内容。有时这种解释是误导性的

    如果您得到奇怪的结果,那么执行其他测试

    console.log(Array);          // [ undefined ] ...huh???
    console.log([].constructor); // [ undefined ] ...huh???
    
    typeof [].constructor; // Firebug still gives "function"
    
    [].constructor === Array; // Firebug returns true
    
    因此,您可以看到,尽管Firebug对函数本身给出了奇怪的解释,但它并没有改变这样一个事实,即它仍然是预期的
    Array
    构造函数

  • 构造函数
    属性是可写的。因此,
    anyObject.constructor
    可以显式设置为
    undefined
    null
    (这将在
    anyObject
    上创建一个新属性,并且不会修改
    原型的
    constructor
    属性)。您还可以将
    原型的
    构造函数
    属性更改为
    未定义
    ,以便它反映在函数的每个实例上。默认情况下,它永远不会是
    null
    未定义的

  • 它按预期显示了
    函数数组(){[native code]}
    。由于没有得到相同的结果,可能第三方代码修改了
    Array.prototype.constructor
    。你应该检查一下


  • var数据=新数组(1,2,3);console.log(data.constructor)显示
    函数数组(){[native code]}
    。你在使用哪个平台?看下面,嗯。。是的,更多的困惑。如果我在firebug控制台中尝试相同的代码,它会记录[未定义]。@Arjun:不要过于依赖控制台输出。这是一种解释,容易出现错误和误解。