JavaScript原型设计基础知识

JavaScript prototyping basics

本文关键字:基础知识 原型 JavaScript      更新时间:2023-09-26

任何人都可以简单地解释为什么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()