淺談javascript 函數(shù)屬性和方法
每個(gè)函數(shù)都包含兩個(gè)屬性:length 和 prototype
length:當(dāng)前函數(shù)希望接受的命名參數(shù)的個(gè)數(shù)
prototype:是保存他們所有實(shí)力方法的真正所在
function sayName(name) {
alert(name);
}
function sum(num1, num2) {
return num1 + num2;
}
function sayHi() {
alert("hi");
}
alert(sayName.length);//1 參數(shù)個(gè)數(shù)一個(gè)
alert(sum.length);//2 參數(shù)個(gè)數(shù)2個(gè)
alert(sayHi.length);//0 沒(méi)有參數(shù)
每個(gè)函數(shù)都包含兩個(gè)非繼承而來(lái)的方法:apply() 和 call()
這兩個(gè)方法都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)this對(duì)象的值
首先apply()接受兩個(gè)參數(shù):一個(gè)是函數(shù)運(yùn)行的作用域,另一個(gè)參數(shù)數(shù)組(可以是數(shù)組實(shí)例也可以是arguments對(duì)象)
function sum(num1, num2) {
return num1 + num2;
}
function callSum1(num1, num2) {
return sum.apply(this, arguments);//傳入arguments對(duì)象
}
function callSum2(num1, num2) {
return sum.apply(this, [num1, num2]);
}
alert(callSum1(10, 10));//20
alert(callSum2(10, 20));//30
其次,call方法第一個(gè)參數(shù)沒(méi)有變化,變化的是其余的參數(shù)都是傳遞參數(shù),傳遞給函數(shù)的參數(shù)需要逐個(gè)列舉出來(lái)
function sum(num1, num2) {
return num1 + num2;
}
function callSum(num1, num2) {
return sum.call(this, num1, num2);
}
alert(callSum(10, 200));
至于使用哪個(gè)方法更方便,完全取決于你的意愿。如果沒(méi)有參數(shù),用哪個(gè)都一樣。
但是,apply和call方法的出現(xiàn)絕對(duì)不是只是為了怎樣去船體參數(shù)。
它們真正的用武之地在于擴(kuò)充函數(shù)賴以運(yùn)行的作用域。
window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
}
sayColor();//red
sayColor.call(this);//red
sayColor.call(window);//red
sayColor.call(o);//blue
使用apply和call來(lái)擴(kuò)充作用域的最大的好處就是不需要與方法有任何的耦合關(guān)系。
ECMAScript5 還定義了一個(gè)方法:bind()。這個(gè)方法會(huì)創(chuàng)建一個(gè)函數(shù)的實(shí)例,其this值會(huì)被綁定到傳給bind函數(shù)的值
window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
}
var bindFun = sayColor.bind(o);
bindFun();//blue
以上就是本文的全部?jī)?nèi)容,希望小伙伴們能夠喜歡。
- javascript時(shí)區(qū)函數(shù)介紹
- JavaScript中valueOf函數(shù)與toString方法深入理解
- JavaScript回調(diào)(callback)函數(shù)概念自我理解及示例
- javascript 終止函數(shù)執(zhí)行操作
- javascript獲取函數(shù)名稱、函數(shù)參數(shù)、對(duì)象屬性名稱的代碼實(shí)例
- 詳談JavaScript 匿名函數(shù)及閉包
- Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性
- 淺談javascript 函數(shù)內(nèi)部屬性
- JavaScript學(xué)習(xí)筆記之JS函數(shù)
相關(guān)文章
js寫(xiě)出遮罩層登陸框和對(duì)聯(lián)廣告并自動(dòng)跟隨滾動(dòng)條滾動(dòng)
這篇文章主要介紹了js寫(xiě)出遮罩層登陸框和對(duì)聯(lián)廣告并自動(dòng)跟隨滾動(dòng)條滾動(dòng),需要的朋友可以參考下2014-04-04微信小程序連接數(shù)據(jù)庫(kù)與WXS的使用方法詳細(xì)介紹
這篇文章主要介紹了微信小程序連接數(shù)據(jù)庫(kù)與WXS的使用方法,微信小程序是騰訊內(nèi)部的產(chǎn)品,不能直接打開(kāi)一個(gè)外部的鏈接,但是騰訊為開(kāi)發(fā)者封裝好了API用來(lái)請(qǐng)求一個(gè)網(wǎng)站的內(nèi)容或者服務(wù),感興趣的同學(xué)可以參考下2023-12-12JS實(shí)現(xiàn)根據(jù)用戶輸入分鐘進(jìn)行倒計(jì)時(shí)功能
倒計(jì)時(shí)功能大家無(wú)論在各大網(wǎng)站都可以看到,今天小編給大家分享一段基于js實(shí)現(xiàn)的根據(jù)用戶輸入分鐘進(jìn)行倒計(jì)時(shí)功能,非常不錯(cuò),需要的朋友參考下吧2016-11-11document.all與getElementById、getElementsByName、getElementsByT
HTML DOM 定義了多種查找元素的方法,除了 getElementById() 之外,還有 getElementsByName() 和 getElementsByTagName()。2008-12-12JS中type="button"和type="submit"的區(qū)別
Submit是專門(mén)用于提交表單的Button,與Button的區(qū)別主要有兩點(diǎn):type=button 就單純是按鈕功能,type=submit 是發(fā)送表單 。下面通過(guò)本文給大家分享JS中type="button"和type="submit"的區(qū)別,感興趣的的朋友一起看看吧2017-07-07JavaScript新增的兩個(gè)原始數(shù)據(jù)類(lèi)型詳解(Record和Tuple)
js中原始數(shù)據(jù)類(lèi)型有Number、String、Boolean、Null、Undefined、Symbol (ES6引入的數(shù)據(jù)類(lèi)型),引用的數(shù)據(jù)類(lèi)型有Object,Array,Function,下面這篇文章主要給大家介紹了關(guān)于JavaScript新增兩個(gè)原始數(shù)據(jù)類(lèi)型(Record和Tuple)的相關(guān)資料,需要的朋友可以參考下2022-03-03