Javascript學(xué)習(xí)筆記——8.7 函數(shù)屬性、方法和構(gòu)造函數(shù)

函數(shù)是一個特殊的對象,所以可以有自己的屬性和方法,甚至可以用Function()構(gòu)造函數(shù)來創(chuàng)建新的函數(shù)

length

函數(shù)有只讀的length屬性,它代表函數(shù)定義的參數(shù)的個數(shù)。要與arguments.length區(qū)分開,后者是函數(shù)調(diào)用時傳入?yún)?shù)的個數(shù)。

prototype

每個函數(shù)都包含不同的原型對象。當(dāng)函數(shù)用作構(gòu)造函數(shù)的時候,新創(chuàng)建的對象會從原型對象上繼承屬性。

call()和apply()

call和apply的作用相同,可以將對象引用為this,只是參數(shù)傳入的方式不同。

    function add(c,d){
        return this.a + this.b + c + d;
    }

    var s = {a:1, b:2};
    console.log(add.call(s,3,4)); // 1+2+3+4 = 10
    console.log(add.apply(s,[5,6])); // 1+2+5+6 = 14

bind

當(dāng)在函數(shù)f()上調(diào)用bind()方法并傳入一個對象o作為參數(shù),這個方法將返回一個新的函數(shù),調(diào)用新的函數(shù)會把原始函數(shù)f()方做o的方法來調(diào)用。

function add(){return this.x+this.y}
var o = {x:10,y:20}
var fun = add.bind(o)
fun() //30

toString

函數(shù)的toString方法大多返回函數(shù)的源碼

//承接上面的代碼
fun.toString()
"function () { [native code] }"
add.toString()
"function add(){return this.x+this.y}"

Function構(gòu)造函數(shù)

除了使用function關(guān)鍵字定義,函數(shù)可以通過Function構(gòu)造函數(shù)來定義
以下兩種方式定義是等價的

var f1 = new function("x","y","return x*y")
var f2= function(x,y){return x*y}
  • Function構(gòu)造函數(shù)可以傳入任意數(shù)量字符串,最后一個字符串是函數(shù)體,前面的都是參數(shù)。
  • 函數(shù)體可以包含任意條語句,可以用分號分割。
  • 如果不需要參數(shù),只需要傳入一個字符串作為函數(shù)體。
  • Function構(gòu)造函數(shù)允許Javascript在運行時動態(tài)創(chuàng)建并編譯函數(shù)
  • 如果在循環(huán)中使用Function構(gòu)造函數(shù),效率會比較低。但是循環(huán)中的嵌套函數(shù)和函數(shù)定義表達式不會每次都重新編譯,效率會比較高。
  • Function構(gòu)造函數(shù)創(chuàng)建的函數(shù)不使用詞法作用域,它總是在頂層執(zhí)行。
var scope = 'global scope'
function consFun(){
    var scope = "local scope"
    return new Function("return scope")
}
consFun()() //"global scope"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,926評論 0 5
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,489評論 0 21
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評論 0 38
  • 這周我讀了這本《今天以后,人生的無數(shù)可能》。匆匆看完之后,覺得大部分的故事都是在說情感方面的事情,對于實際上的奮斗...
    虔一閱讀 656評論 0 1
  • 煙花三月里,你我并非相遇斷橋,流火七月間,恰逢浪子遇新顏。 不管是前世靈魂的羈絆,還是今世短短數(shù)學(xué)的日久生情你我相...
    青柯2閱讀 383評論 3 0

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