Dag*_*bit 7 javascript constructor terminology function
在JavaScript中似乎有几个不同的"组"类似函数的东西.以下是我的名字:
"常规函数":这些函数可以用parens和new
.大多数功能都属于这一类.
"仅构造函数":这些函数new
仅可调用.例如,Image
,DOMParser
等.
"非构造函数":这些函数可以用parens调用,但不能用new
.例如Math.round
,Function.prototype
.
"不可调用函数":这些函数根本不可调用.例如,window.constructor
,Document
,NodeList
,等.
这些不同功能组的专有名称是什么?
我还试图弄清楚函数所在的"组"是否可以根据其[[Prototype]]
(__proto__
)属性是否设置来确定Function.prototype
.
大多数"常规功能"都有Function.prototype
,但可以使用非标准功能删除__proto__
.
大多数"仅构造函数"具有Object.prototype
.我找不到他们所拥有的任何情况Function.prototype
(所以,没有call
或apply
).这总是情况/规格行为吗?
"非构造函数"似乎主要Function.prototype
与其Function.prototype
自身有关.还有其他案例Object.prototype
吗?
"不可赎回的功能"似乎总是如此Object.prototype
.是这样的吗?
我会在这里回答一些答案:
常规函数:
function
构造函数:constructor
非构造函数:method
不可调用:interface
这不是我真正想要的."函数"和"构造函数"当然是正确的,但我正在寻找更具体的东西("非构造函数"等).
"方法"并不比"函数"更好地告诉你它不能被调用new
,并且constructor
没有得到指出它只能被调用new
.
在许多情况下,只能从constructor
宿主对象的属性访问不可调用的函数.我认为大多数这些更准确地称为"构造函数"而不是"接口".
[关于主机对象与本机对象的东西]
这有点走上正轨.考虑到这个问题(以及接受的答案及其评论),似乎对用户定义的函数是主机还是本机对象存在一些分歧或混淆.
为了避免这种情况,我们只需调用用户定义的函数UDF,而不用担心它们是主机还是本机.所以我们有UDF,宿主对象和本机对象.
"常规功能"
每个UDF
本地对象一样Object
,String
等等.
主机对象window.toString
(在Chrome 18中测试).
"仅构造函数"
没有原生物体?
主机对象一样DOMParser
,Image
.
"非构造函数"
像Math.round
和的原生对象Function.prototype
.
主机对象如DOMParser#parseFromString
.
"不可调用的函数"
没有原生物体?
主机对象一样NodeList
,DocumentFragment
.
因此看起来主机对象和仅构造函数/不可调用函数之间可能存在连接,但主机与本机似乎不适用于非构造函数和常规函数.
我认为您所要求的内容没有正式命名,但通常这是人们在任何编程语言中调用所有这些函数的方式:
function
constructor
method
interface
对于 JS,这是指较低级别的原生对象) 归档时间: |
|
查看次数: |
927 次 |
最近记录: |