js里面函數(shù)的三種角色

1、函數(shù)本身也有一些自己的屬性
// length: 行參的個(gè)數(shù)
// name: 函數(shù)名
// prototype: 類的原型,在原型上定義的方法,都是當(dāng)前Fn這個(gè)實(shí)例的公有的方法。
// _ proto _ 把函數(shù)當(dāng)做一個(gè)普通的對象,指向Function這個(gè)類的原型

2.一個(gè)函數(shù)存在多面性
(1)、"普通函數(shù)":本身就是一個(gè)普通的函數(shù),執(zhí)行的時(shí)候行成私有的作用域(閉包),進(jìn)行形參賦值、預(yù)解釋、代碼執(zhí)行,執(zhí)行完成后棧內(nèi)存銷毀或者不銷毀;
(2)、"類": 它有自己的實(shí)例,也有一個(gè)叫做prototype的屬性是自己的原型,它的實(shí)例都可以指向自己的原型;
(3)、"普通對象": 和let obj = {}一樣,作為一個(gè)普通的對象,作為普通的對象,有一些自己私有的屬性,也可以通過 _ proto _找到Function.prototype

// 上面三者之間沒有必然的聯(lián)系
Function.prototype是函數(shù)數(shù)據(jù)類型的值,操作和之前的一模一樣

  function Fn () {
    var num = 100;
    this.x = 200;
  }

  let f = new Fn; //Fn里面的this是f
  Fn.aaa = 300;
  f.num // undefined
  f.aaa // undefined 
  let res =   Fn(); // Fn里面的this是window
  res // undefined
  Fn.aaa // 300
 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容