JavaScript基礎學習之-JavaScript權威指南--第八章函數屬性方法建構函式__JavaScript

來源:互聯網
上載者:User
函數屬性、方法和建構函式 一、函數屬性

函數是js中特殊的對象,可以擁有屬性。

funcation.length屬性:代表形參的長度,唯讀屬性,不允許更改
arguments.length代表的是實參長度
prototype屬性:每個函數都有一個prototype屬性,當把函數當做建構函式時,新建立的對象會從原型對象上繼承屬性。 二、函數方法

與其他語言不同,ECMAScript函數不介意傳遞進來多少個參數,也不在乎是什麼類型。因為實參在內部是用一個類數組來表示的,函數接收到的始終是個類數組。
具名引數(形參)只提供便利,但不是必須的。

注意:js中方法本身是沒有重載的,因為:
1.方法的本質就是一個Function類型的變數,如果出現同名的變數,會覆蓋。
2.但是依靠函數內部屬性argument來類比重載。
//類比函數重載。

function testArgument() {if (arguments.length == 1) {        alert("哈哈~1"+arguments[0]);    } else if (arguments.length == 2) {        alert("哈哈~2" + arguments[0] + "," + arguments[1]);    } else {        alert("哈哈~3");    }}testArgument();testArgument(1);testArgument(1, 2);prototype 是儲存某個對象【所有執行個體】【共用屬性】的地方。就是說,比如toString()和valueOf()等方法實際上都儲存在prototype名下,只不過通過各自對象的執行個體訪問罷了。在建立自訂參考型別及實現繼承時,prototype屬性的作用是極為重要的。

call()和apply()方法:看作是某個對象的方法,通過調用方法的形式來間接調用函數。
第一個參數是要調用函數的母對象,即調用上下文。在函數體內通過this獲得對他的引用。

f.call(o);
f.apply(o);

等價於
o.m = f();
o.m();
delete o.m;

ES5中第一個實參都會變成this的值,哪怕傳入null和undefined。
ES3和非strict 模式中,傳入null和undefined會被全域對象替換,而其他原始值會被其他相應的封裝對象替代。

bind()方法:ES5中新增加方法,主要作用是將函數綁定至某個對象。
當函數f()上調用bind()方法傳入對象o時,這個方法將返回一個新的函數,調用新的函數時會當做o的方法進行調用。 三、函數建構函式

Function()建構函式

Function()建構函式可以傳入任意數量的字串實參,最後一個實參所表示的文本就是函數體。 Function()建構函式運行JavaScript在運行時動態建立並編譯函數 每次調用Function()建構函式都會解析函數體,並建立新的函數對象。若在迴圈中建立效率低下。 Function()所建立的函數並不使用詞法範圍,相反,函數體代碼的編譯總是會在頂層函數執行。 四、可調用對象

函數是可調用對象。所有的函數都是可調用的,但是並非所有的可調用對象都是函數。

可調用對象在兩個JavaScript實現中不能算作函數。window.alert()和document.getElelmentById()使用了可調用的宿主對象但是本質上不是function對象。

RegExp對象。判斷一個對象是否為函數和isArray類似。

[javascript] view plaincopyfunction isFunction(x){      return Object.prototype.toString.call(x) === "[object Function]";  }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.