淺談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 沒有參數(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ù)沒有變化,變化的是其余的參數(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è)方法更方便,完全取決于你的意愿。如果沒有參數(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)文章
Javascript查看大圖功能代碼實(shí)現(xiàn)
這篇文章主要介紹了Javascript查看大圖功能代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
fullpage.js全屏滾動(dòng)插件使用實(shí)例
這篇文章主要介紹了fullpage.js全屏滾動(dòng)插件使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
javascript 數(shù)組排序與對(duì)象排序的實(shí)例
這篇文章主要介紹了javascript 數(shù)組排序與對(duì)象排序的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-07-07
JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析
這篇文章主要介紹了JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
JavaScript的防抖和節(jié)流一起來(lái)了解下
這篇文章主要為大家詳細(xì)介紹了JavaScript的防抖和節(jié)流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03

