Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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原型基础_Javascript - Fatal编程技术网

JavaScript原型基础

JavaScript原型基础,javascript,Javascript,任何人都可以用简单的语言解释为什么使用JavaScript表达式吗 123.unexistingProperty; 抛出一个错误,而 var v = 123; v.unexistingProperty; (123).unexistingProperty; true.unexistingProperty; "".unexistingProperty; [].unexistingProperty; {}.unexistingProperty; 不 这是与原型设计有关还是仅仅与语言的一些基本原理有

任何人都可以用简单的语言解释为什么使用JavaScript表达式吗

123.unexistingProperty;
抛出一个错误,而

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

这是与原型设计有关还是仅仅与语言的一些基本原理有关

另外,这不仅仅是假设,在对动态生成的代码实现eval时,这是一个问题

这与原型设计有关吗

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

例如,这将不起作用:

123.unexistingProperty;
但这将起作用:

(123).unexistingProperty;
问题是一个数字可以写成10.5的形式,这意味着这个点不能用来访问属性。出于这个原因,您必须在括号之间加上一个数字才能调用该数字的属性

例如:

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

v、 不可抗拒的功能;抛出未捕获的TypeError:undefined不是一个函数我认为123是常量,而v是变量,v有一些属性。感觉这个答案的最后部分是唯一有意义的部分:在数字后面使用点歧义,这只是一个语言原理。@vitaly-t