【发布时间】:2011-10-22 17:12:14
【问题描述】:
澄清:
“JavaScript 构造器”应该更恰当地写成“javascript 构造器”,以强调所考虑的构造器不仅是原生 JavaScript 语言构造器,如 Object、Array、Function 等,还包括 JavaScript 语言定义之外的其他构造器但对于浏览器来说是固有的,例如XMLHttpRequest,“JavaScript”这个词的意思是表示这些构造函数是使用 JavaScript 表达和访问的。
一些参考资料:
- 在Working with Objects - MDN Docs 中使用构造函数
- "
constructor
指定创建对象原型的函数"
在Object - MDN Docs - 一个例子:“...调用
Worker()构造函数...”
Worker - MDN Docs - What are the predefined primitive constructors?
- Where are constructors such as, `new Image()` and `new Option()`, documented?
- Where is the Documentation for all of the Javascript HTML Element Constructors?
在修辞上,有对构造函数 functions 的引用,但不是构造函数 objects!
(表面上看,这是因为对象是函数,而函数是对象!
Why in JavaScript is a function considered both a constructor and an object?
更具体地说,对象,或者是 obj-eggs?,ARE,忽略文字实例,函数和函数的实例化是函数的对象实例。可以说,函数是对象存在的基础,这一事实证明了这一点
7.Functions
先于
8.Working with Objects
在 MDN 文档中JavaScript Guide。第 8 节,我反对!提供了使用构造函数和函数实例化创建对象所需的详细信息!)
为什么接口 DOM 的构造函数不是函数?
javascript:
alert([
"using browser environment: \n"+window.navigator.userAgent,
Option, Image, Audio,
Storage, XMLHttpRequest, Worker, FileReader,
] . join("\n\n"));
向我们展示:
使用浏览器环境:
Mozilla/5.0(X11;U;Linux i686;en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3[对象选项]
[对象图像]
[对象音频]
[对象存储]
[对象 XMLHttpRequest]
[对象工作者]
[对象文件读取器]
但是……
javascript:
alert([
XPCNativeWrapper,
].join("\n\n"));
(产生
函数 XPCNativeWrapper() { [本机代码] }
)
和 JavaScript 语言 constructors ARE 函数。
javascript:
alert([
"using browser environment: \n"+window.navigator.userAgent,
Array, Boolean, Date, Function,
Number, Object, RegExp, String,
Error, Iterator,
].join("\n\n"));
给我们:
使用浏览器环境:
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 Object() { [native code] }显然 Object 是一个函数。 (我的舌头在我的脸颊上,我很厚脸皮但是,,,) -
这里有一些对象对象是函数:
javascript:x=y=z=Object; alert([x,y,z].join("\n\n"))重申,每个对象都是一个函数! (不是每个对象都如此!)