构造函数在哪里,例如`new Image()`和`new Option()`,有记录吗?

时间:2011-08-04 04:07:53

标签: javascript dom

不是在Mozilla但是:

鉴于这些参考文献,如下所述,mozilla.org是否记录相同内容是没有意义的。


具体而言,mozilla.org处的构造函数如new Image()new Option()在当代背景下记录了什么?

古代documentation

描述了这些构造函数的存在,将它们作为内在的JavaScript语言组件,这是不正确的。

javascript: alert([new Image(), '\n\n', new  Option()])

通过显示

清楚地表明它们的存在
  

[object HTMLImageElement],

     

,[object HTMLOptionElement]

修辞,怎么样:

javascript:alert([new Anchor(), new Preserve(), new Form(),,, ])

还有哪些其他原始元素DOM构造函数?或者,没有更多?

Mozilla使用的DOM范式是否具有诅咒,并且与new Image()new Option()等的编程定义相结合,解释它们的缺失?然而,这些构造函数显然不是JavaScript的语言规范所固有的,当然也不是HTML。那么,究竟是否有正确的当前范例(源自mozilla.org)完全描述它们,包括参数类型和顺序?

的引用:


旁白:(请不要因此而分心 - 找到文章标题中指定的相关文件是唯一的考虑因素)

answer提示进行以下检查。这只是一个观察。

javascript:
    alert([  Option, Image,
               JSON, Math, Error, 
                 Array, Boolean, Date, Function,
                   Number, Object, RegExp, String  ].join("\n\n"));
    alert( Image.toSource() );

在FireFox中生成:

  

[对象选项]

     

[object Image]

     

[对象JSON]

     

[object Math]

     

function Error(){       [本地代码]}

     

function Array(){       [本地代码]}

     

function Boolean(){       [本地代码]}

     

function Date(){       [本地代码]}

     

function Function(){       [本地代码]}

     

function Number(){       [本地代码]}

     

function Object(){       [本地代码]}

     

function RegExp(){       [本地代码]}

     

function String(){       [本地代码]}

  

({})

Error: ({}) is not a constructor
Source File: javascript:alert(new ({}));
Line: 1

Image是构造函数吗?答案(可能)可以在回答本帖子标题中提出的问题的文件中找到。这应该在适当的文件中强调编目ImageOption等的不一致,异常和不规范。

4 个答案:

答案 0 :(得分:10)

JavaScript™(Mozilla的DOM操作ECMAScript的实现,又名Gecko)和用于描述其他浏览器中类似脚本环境的通用术语“javascript”(例如IE中的JScript)之间存在区别。 / p>

  

古老的文件,   [...]   描述了这些构造函数的存在,将它们描述为   内在的JavaScript语言组件,这是不正确的。

你是如何得出这个结论的? JavaScript™属于Mozilla,因此他们可以指定它包含他们想要的任何内容。 JavaScript™从一开始就有一个Image和Option构造函数,其他实现已经复制它们,以便现有的每个浏览器都有它们。这些功能在创建W3C DOM接口之前就存在了,并且无处不在,标记为“DOM 0”,这实际上意味着在DOM 1时Netscape Navigator和Internet Explorer支持。

DOM 0未在任何地方正式记录。 HTML5是一种尝试编写HTML和javascript的规范,因为它在浏览器中实现,因此它包括Image和Option构造函数,因此包含DOM 0功能,但它们没有标记或分类。

[...]

  

然而,这些构造函数显然不是语言所固有的   JavaScript规范

没有已发布的JavaScript™规范,Mozilla Developer Network(MDN)上只有JavaScript文档。另请注意,MDN上的文档是任何人可以创建和编辑的公共Wiki,包括您。 : - )

你错误地认为Mozilla的文档是JavaScript™的某种完整规范 - 但事实并非如此。不是很长的路。它实际上只是由感兴趣的人添加的文档,主要是通过浏览浏览器并查看它的作用。还有一个JavaScript Reference,但您也可能会发现缺少。{/ p>

[...]

  

HTMLImageElement Mozilla文档

指向Gecko DOM参考的链接记录了W3C HTMLImageElementInterface的JavaScript实现,该实现没有 Image 构造函数。

  

Mozilla上使用Image()构造函数的当代先例

表明它存在,但没有方便的地方来记录它。最好记录在JavaScript Reference中。如果您想添加它,请获取一个MDN帐户(免费,非常简单)并添加它。

修改

MDN现在有一篇Image文章链接到相关标准。

2015年5月25日编辑

Option构造函数是documented in HTML5

答案 1 :(得分:2)

FWIW Microsoft在MSDN上有这两个构造函数的文档:

答案 2 :(得分:1)

HTML 5

  

DOM选项类

     

http://dev.w3.org/html5/spec-preview/the-option-element.html

提供了几个构造函数来创建HTMLOptionElement对象(除了来自DOM Core的工厂方法,例如createElement()):Option(),Option(text),Option(text,value),Option(text,value, defaultSelected)和Option(text,value,defaultSelected,selected)。

答案 3 :(得分:0)

实际上,我从来不必使用构造函数参数。我只是创建了对象并随后填充了成员。

var img=new Image();
img.src="path/to/image.jpg";

当我在Javascript中“遇到”一个新类时,我会使用JSON.stringify并使用一段代码来探索它:

var obj_to_explore=new Image();
var dbg=[]
for(var i in obj_to_explore){
    dbg.push(i+": "+obj_to_explore[i]);
}
//alert("explored object: " + dbg.join(", "))
console.log("explored object: " + dbg.join(", "));

因为在特定成员名称上查找(在谷歌上)信息比在功能描述上更容易。