var a = function() { }; //Just a function
當我在控制檯中運行a.__proto__
,它返回這個call()和apply()Javascript?
function() {}
因此,如果在JavaScript中創建的每個函數的原型是像上面的功能,又在哪裏像()調用準確的方法,適用()和bind()定義?
var a = function() { }; //Just a function
當我在控制檯中運行a.__proto__
,它返回這個call()和apply()Javascript?
function() {}
因此,如果在JavaScript中創建的每個函數的原型是像上面的功能,又在哪裏像()調用準確的方法,適用()和bind()定義?
這些函數確實存在於a.__proto__
(或更多鏈中) - 您所看到的問題更多的是它在控制檯中的表現方式。例如,如果您只在控制檯中執行a
,您還會看到空的函數字符串,但沒有您已知的__proto__
屬性。
正如@squint指出in the comments,如果使用console.dir
其它性能將被顯示:
如果在JavaScript創建的每個功能的原型是像上述的功能,然後在那裏像call(),apply()和bind()定義的方法確切嗎?
正是在那個函數/ pobject上。 Function.prototype
是一個功能,但它不像其他任何。它的定義§8.2.2 CreateIntrinsics:
8.讓noSteps是算法步驟一個空序列。
9.讓funcProto是CreateBuiltinFunction(realmRec,noSteps,objProto)。
10.設置內部函數。[[%FunctionPrototype%]]至funcProto。
它是一個內置的功能,但其自身的原型設置爲默認的對象原型(objProto
)這裏,不是本身(你不能有圓形的原型鏈)。
在算法第13步,然後去,並說所有的內在價值需要根據某些人,某些部分在規範遞歸初始化:
與值內在的設置字段Table 7列出還沒有被處理過。字段名稱是表格第一列中列出的名稱。每個字段的值都是一個新的對象值,並且按照第18-26節中每個對象的規範定義的屬性值遞歸填充。 [...]
表包含:
%FunctionPrototype%
|Function.prototype
|原型數據%Function%
和§19.2.3property
的初始值描述了對象的所有屬性,包括你提到的那些。
On'Function'原型 – Tushar
a.constructor.prototype.apply –
可能在該函數對象上。 – melpomene