首页 > 转型函数String()是全局对象global的方法吗

转型函数String()是全局对象global的方法吗

RT,转型函数String()是全局对象的方法吗?

还有高程3上的关于单体内置对象的这一段:

ECMA-262 对内置对象的定义是:“由ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript 程序执行之前就已经存在了。”意思就是说,开发人员不必显式地实例化内置对象,因为它们已经实例化了。前面我们已经介绍了大多数内置对象,例如Object、Array 和String。ECMA-262 还定义了两个单体内置对象:Global 和Math。

我想问下 要是不必显式的实例化对象,那 new Object(),new Array()这些是做什么用的?

读到了第五章,有些疑问,希望好心人可以解答下?


这些东东都是 构造函数 ,其实 在js里面 很多相应的数据类型对象 都是由 构造函数生成的,比如 number string arry object 只是 有时候写法不同 ,毕竟怎么方便怎么来,如果随便一个东东都要 new 一个函数,写起来也太麻烦了。


看描述好像在说Object,Array,String这种对象是有es标准实现,何具体的运行环境无关,他说的这几个对象应该是函数对象,而不是实力对象吧


String 在 JS 中是被定义成一个类的,而类在 JS 中是被定义为构造函数的,所以,实际上 String 是一个类,也就是一个函数。至于 new String()String() 有啥区别,可能要从 ECMA-262 上去找了,因为平时很少会这样使用,所以我并不知道它们的结果,就目前来看,我也不想知道。

顺便说一句,转型数据类型,可以简单的用 "" + var 解决。

补充回复(后面回复居然不支持表格)

看看 MDN 上 typeof 的说明,结果都是小写的字符串,我个人觉得都是小写比较起来方便。

Type Result
Undefined "undefined"
Null "object"" (see below)"
Boolean "boolean"
Number "number"
String "string"
Symbol (new in ECMAScript 2015) "symbol"
Host object (provided by the JS environment) Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms) "function"
Any other object "object"

当你想创建一个类的时候,你也许会这样(假设你想创建一个 Person 类):

function Person(){
    this.name = arguments[0];
    this.age = arguments[1];
    this.saySomething = function(){
        ...
    }
    ...
}

现在我们就可以 new 出不同的 Person 对象了:

new Person("jack");
new Person("mike", 18);
...

然而随着使用时间的推移,你发现 Person 类用的实在是太多了,你感觉每次频繁的 new Person(args...) 实在是麻烦,于是你自己动手修改了 js 引擎,规定 %mike% 为声明一个 Person 对象,等同于 new Person("mike")。后来,世人们都习惯于 var mike = %mike%;

自己的理解,如有不足,欢迎指正补充

【热门文章】
【热门文章】