哪里记录了诸如“new Image()”和“new Option()”之类的构造函数?

IT技术 javascript dom
2021-03-08 09:05:02

不是在 Mozilla,而是:

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


具体来说,在当代语境mozilla.org中,构造函数在哪里new Image()并被new Option()记录在案?

古老的文档

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

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

通过显示清楚地表明它们的明显存在

[对象 HTMLImageElement],

,[对象 HTMLOptionElement]

修辞上,怎么样:

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

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

它是诅咒,并且不符合由Mozilla使用,纳入编程定义DOM范式new Image()new Option()等,解释他们的缺席?然而,这些构造函数显然不是 JavaScript 语言规范所固有的,当然也不是 HTML。那么,究竟在哪里有一个正确的当前范式(源自mozilla.org)来完整描述它们,包括参数类型和顺序?

参考:


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

这个答案促使了以下检查。这只是一个观察。

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

在 Firefox 中生成:

[对象选项]

[物体图像]

[对象JSON]

[对象数学]

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

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

函数 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个回答

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

古老的文档,[...] 描述了这些构造函数的存在,暗示它们是内在的 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 开发人员网络(MDN) 上的 JavaScript 文档另请注意,MDN 上的文档是一个公共 wiki,任何人都可以创建和编辑,包括您。:-)

您错误地认为 Mozilla 的文档是 JavaScript™ 的某种完整规范——它不是。不是很远。它实际上只是由感兴趣的人添加的文档,主要是通过浏览浏览器并查看它的作用。还有一个JavaScript Reference,但您也可能会发现缺乏。

[...]

HTMLImageElement Mozilla 文档

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

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

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

编辑

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

2015 年 5 月 25 日编辑

Option 构造函数记录在 HTML5 中

@ekim - 该链接指向 ECMAScript 标准,而不是 JavaScript™。JavaScript™ 的发布文档,但没有标准。
2021-04-19 09:05:02
由 JavaScript、DOM 和 HTML 描述的范式的概念和描述在 Mozilla 的文档中进行了明确。构造函数new Image(width, height)(高度,宽度?或指定顺序的文档在哪里?)不“适合”那些定义的范例,并且当前文档中缺少它们的定义。
2021-04-23 09:05:02
这两个构造函数(Image()、Option())不适合通用 Mozilla JavaScript 范例,否则它们仍将驻留在当前的developer.mozilla.org/en/JavaScript文档中。类似的情况是document.createElement()which 是 DOM 概念而不是 JavaScript 语言组件。它们本质上绑定到文档的对象模型。无论如何 - 在这一点上,我的问题显然完全是修辞,因为它们似乎没有记录在任何当前正式的 Mozilla 规范中,甚至没有被弃用。
2021-04-26 09:05:02
“ ... JavaScript 语言资源对 JavaScript 语言标准的描述 ... ”是JavaScript -MDN Docs页面底部的逐字引用
2021-05-07 09:05:02
“没有已发布的 JavaScript™ 规范”?引用JavaScript -MDN Docs有一个部分: JavaScript Language Resources JavaScript 语言标准的描述。
2021-05-10 09:05:02

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

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)。

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

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(", "));

因为(在 google 上)查找特定成员名称的信息比查找功能描述要容易得多。

这不是我的问题 - JSON 无法探索Image,函数,只有它是清单对象new Image(),因此,例如,没有提示Image Function.
2021-04-25 09:05:02
感谢您的评论。出于类似的考虑,该帖子已相应增加。我更喜欢使用 FireFox .toSource(),它比 JSON 和.stringify()(递归、函数等)更通用
2021-05-11 09:05:02