JavaScript中似乎有幾個不同的「功能類似的組」。這裏是我虛構的名字爲他們:不同類型功能的術語
「常規功能」:這是調用與括號,並用
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
(so,nocall
或apply
)的情況。這總是這種情況/ spec'd行爲?「非構造函數」似乎主要有
Function.prototype
,但Function.prototype
本身除外。是否有其他的情況有Object.prototype
?「不可贖回功能」似乎總是有
Object.prototype
。是這樣嗎?
我會到一些答案在這裏回答:
常規功能:
function
構造:constructor
非構造:method
不可贖回:interface
這不是我正在尋找的東西。 「函數」和「構造函數」當然是正確的,但我正在尋找更具體的東西(「非構造函數」等)。
「法」並不比「功能」在告訴你它不能與new
被稱爲好,constructor
沒有得到跨越,它可以只與new
調用點。
在許多情況下,只能從主機對象的constructor
屬性訪問不可調用函數。我認爲大多數這些將比「接口」更準確地稱爲「構造函數」。
[東西有關主機對象VS本地對象]
這有點在正確的軌道上。考慮到this question(以及接受的答案及其評論),對於用戶定義的函數是主機還是本機對象似乎存在一些分歧或混淆。
爲了避免這種情況,我們只需調用用戶定義的函數UDF,而不用擔心它們是主機還是本機。所以我們有UDF,主機對象和本地對象。
「正則函數」
每UDF
原生對象像
Object
,String
等主機對象像
window.toString
(在Chrome 18測試)。
「構造,唯一的功能」
沒有本地對象?
主機對象如
DOMParser
,Image
。
「非構造函數」
像
Math.round
和Function.prototype
本地對象。主機對象如
DOMParser#parseFromString
。
「不可贖回功能」
沒有本地對象?
主機對象如
NodeList
,DocumentFragment
。
所以看起來有可能是主機對象和構造只/不可贖回功能之間的連接,但主機VS本土似乎並不適用於非構造和定期的功能。
一個較低的水平。你和你的術語問題又來了!:) – BoltClock
嘿,它已經這個時候困擾我好幾天。我不知道如果我只是做了人工分類目錄那裏有沒有,但我想稱之爲*東西* –
[這裏](https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript)是一個很好的介紹面向對象的JavaScr ipt,它應該回答你的問題。 – sp00m