JavaScript原型基础知识

时间:2015-04-04 07:39:34

标签: javascript

任何人都可以用简单的词语解释为什么JavaScript表达

123.unexistingProperty;

引发错误,而

var v = 123;
v.unexistingProperty;
(123).unexistingProperty;
true.unexistingProperty;
"".unexistingProperty;
[].unexistingProperty;
{}.unexistingProperty;

不?

这与原型设计或语言的某些原理有关吗?

P.S。不仅仅是假设,这在动态生成的代码上实现eval()时会出现问题。

1 个答案:

答案 0 :(得分:4)

  

这与原型设计有关吗

不,原因是Javascript不允许您直接在数字文字上访问属性。

例如,这不会起作用:

123.unexistingProperty;

但这会奏效:

(123).unexistingProperty;

问题在于,可以以10.5的形式编写数字,这意味着点不能用于访问属性。因此,您必须在括号之间换一个数字来调用数字上的属性。

示例:

Number.prototype.fun = function () { return "Fun" }
(100).fun()
(10.5).fun()