注意:Function.prototype是函數資料型別的值,但是相關運算和之前的一模一樣->Empty/anonymous
#函數本身也會有一些自己的屬性:
length :形參的數量
name :"Fn" 函數名稱
prototype 類別的原型,在原型上定義的方法都是目前Fn這個類別實例的公有方法
__proto__ 把函數當做一個普通的對象,指向Function這個類別的原型
#
函數在整個JS中是最複雜的也是最重要的知識:
1、一個函數存在了多面性:
"普通函數":本身就是一個普通的函數,執行的時候會形成私有的作用域(閉包),形參賦值,預先解釋,程式碼執行,執行完成後堆疊記憶體銷毀/不銷毀
"類":它有自己的實例,也有一個叫做prototype屬性是自己的原型,他的實例都可以指向自己的原型
"普通物件":和var obj = {} 中的obj一樣,就是一個普通的對象,他作為對象可以有自己的私有的屬性,也可以透過__proto__找到Function.prototype
# 這三者之間是沒有必然的關係的。
function Fn(){var num = 500;this.x = 100; } Fn.prototype.getX = function(){ console.log(this.x) } Fn.aaa = 1000;var f = new Fn; f.num //undefinedf.aaa//undefinedvar res = Fn(); res//undefinedFn.aaa//1000
以上是js中函數的三種角色介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!