1.name //报错
1.0.name //undefined
还有一个问题,用下面的两个方法修改name属性,都没效果是怎么回事
Object.name = 1;
Object.name; //Object
Object.prototype = {name:1}
Object.name; //Object
1.name //报错
1.0.name //undefined
还有一个问题,用下面的两个方法修改name属性,都没效果是怎么回事
Object.name = 1;
Object.name; //Object
Object.prototype = {name:1}
Object.name; //Object
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
前一个,解释器认为你是在写一个数字,
.
号被解析为小数点,但由于这是一个不合法的数字,所以报错。1.0.name
这个就好玩了,第一个.
号仍然被当作小数点对待,得到数字1.0
,由于数字的解析已经齐全了,然后第二个.
就被当作点操作符
来对待了,也就是调用属性、方法的那个点操作符。于是并不会报错。其实写成
1..name
也可以,由于js支持数字的简写,这时候1.
会被解析为1.0
,因此结果和1.0.name
一样第二个问题,因为
name
是Object
的一个只读属性,所以无法重新赋值。