为什么一些JavaScript构造函数不起作用?

Eki*_*kim 9 javascript constructor

澄清:
"JavaScript构造函数"应该更恰当地写成"javascript构造函数",以强调所考虑的构造函数不仅仅是本机JavaScript语言构造函数,如Object,Array,Function等,还有其他JavaScript外部的构造函数.语言定义,但是浏览器固有的,例如XMLHttpRequest,"JavaScript"一词意味着表示这些构造函数是使用JavaScript表达和访问的.

一些参考:

在修辞上,有对构造函数的引用,但不是构造函数对象!

(好笑,这是因为Objects ARE函数,函数是对象!
为什么JavaScript中的函数既是构造函数又是对象?
更具体地说,对象,或者是obj-eggs?,ARE,忽略文字实例,实例化函数和函数是函数的对象实例.可以说函数是对象存在的基础,如事实所证明的那样
7. 函数
      先于
8. 在MDN文档JavaScript指南中使用对象.第8节,我反对!提供使用构造函数和函数实例创建对象所需的详细信息!)

为什么与DOM接口的构造函数不起作用?

javascript:
  alert([
    "using browser environment:  \n"+window.navigator.userAgent,
     Option, Image, Audio,
       Storage, XMLHttpRequest, Worker, FileReader,
   ] . join("\n\n"));
Run Code Online (Sandbox Code Playgroud)

告诉我们:

使用浏览器环境:
Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.2.3)Gecko/20100423 Ubuntu/10.04(lucid)Firefox/3.6.3

[对象选项]

[对象图片]

[对象音频]

[对象存储]

[object XMLHttpRequest]

[对象工作者]

[object FileReader]

但......

javascript:
  alert([
             XPCNativeWrapper,
  ].join("\n\n"));
Run Code Online (Sandbox Code Playgroud)

(产生

function XPCNativeWrapper(){[native code]}

)

和JavaScript语言构造函数是ARE函数.

javascript:
  alert([
    "using browser environment:  \n"+window.navigator.userAgent,
             Array, Boolean, Date, Function,
               Number, Object, RegExp, String,
                 Error, Iterator,
  ].join("\n\n"));
Run Code Online (Sandbox Code Playgroud)

给我们:

使用浏览器环境:
Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.2.3)Gecko/20100423 Ubuntu/10.04(lucid)Firefox/3.6.3

function Array(){[native code]}

function Boolean(){[native code]}

function Date(){[native code]}

function Function(){[native code]}

函数Number(){[native code]}

function Object(){[native code]}

函数RegExp(){[native code]}

function String(){[native code]}

函数Error(){[native code]}

function Iterator(){[native code]}

Fel*_*ing 3

第一的:

对象是函数

不,不是:

> a = function() {}
  function () {}
> a instanceof Object
  true
> b = {}
  Object
> b instanceof Function
  false
Run Code Online (Sandbox Code Playgroud)

toString方法(在进行字符串连接时调用的方法)并不是获取对象信息的可靠方法。如果我使用typeof,我会得到以下结果:

using browser environment:  
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:5.0.1) Gecko/20100101 Firefox/5.0.1

function

function

function

object

function

function

function
Run Code Online (Sandbox Code Playgroud)

Storage所以你看,除了形式之外,它们中的大多数实际上都是函数(为什么它不适用于Storage,我不知道)。

另请记住,DOM 接口的行为可能与本机 JavaScript 对象不同。

另一方面,在Chrome中,该toString方法给出了:

[object Function] 

[object Function] 

[object Function] 

function Storage() { [native code] } 

function XMLHttpRequest() { [native code] } 

function Worker() { [native code] } 

function FileReader() { [native code] }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1858 次

最近记录:

14 年,2 月 前