javascript - 关于constructor
迷茫
迷茫 2017-04-10 17:21:06
[JavaScript讨论组]
var a = {};
a.constructor  //function Object() { [native code] }
{}.constructor //Uncaught SyntaxError: Unexpected token .(…)

在控制台输入以上代码,出现的情况.
为什么呢,a 和 {} 的constructor 不应该都有并且一样吗?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(5)
迷茫

直接写{}不行,解释器会将这个当成语句块来解释,而不是当做对象字面量

加个括号就好了:({}).constructor。这样写是强制转成表达式,而只有对象字面量可以作为表达式,语句块不行,所以这样就没有歧义了,解释器也就不会犯糊涂了

PHP中文网

有什么不对吗?

Node 5.7.0

> var a = {};
undefined
> console.log(a.constructor);
[Function: Object]
undefined
> console.log({}.constructor);
[Function: Object]
undefined
>

浏览器 Chrominum 核心 v46

var a = {};
undefined
console.log(a.constructor);
VM294:2 Object() { [native code] }
undefined
console.log({}.constructor);
VM389:2 Object() { [native code] }
undefined

你那个问题是 {} 作为起始语句出现的问题,你改成 ({}).constructor 就对了。

伊谢尔伦

label:{
while(true){break label;}
alert(false);
}

{}作为结构体解析不是不够智能,而是确实有其他用途的歧义。

黄舟

啥意思,没啥特殊反应啊
输出一样表示

function Object() { [native code] }
function Object() { [native code] }

同求解释...

迷茫
({}).constructor
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号