日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript高级程序设计第二版第七章匿名函数--笔记

發布時間:2023/12/20 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript高级程序设计第二版第七章匿名函数--笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匿名函數就是沒有名字的函數,有時候也稱為拉姆達(lambda)函數。

function functionName(){};

這是一個函數聲明

在代碼執行以前被加載到作用域中

var functionName = function(){};

這是一個函數表達式

在代碼執行到那一行時才會有定義

7.1 遞歸

arguments.callee是一個指向正在執行的函數的指針,可以實現函數的遞歸調用

function factorial(num){

???????? if(num <= 1){

?????????????????? return 1;

} else {

???????? return num * arguments.callee(num - 1);

}

}

var anotherFactorial = factorial;

factorial = null;

alert(anotherFactorial(4)); // output 24

7.2 閉包

閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常見方式,就是在一個函數內部創建另一個函數。

function fn(propertyName){

???????? return function(object1){

?????????????????? var v1 = object1[propertyName]; //訪問了外部變量propertyName變量

???????? }

}

由于閉包會攜帶包含它的函數的作用域,因此會比其他函數占用更多的內存,過度使用閉包可能會導致內存占用過多。所以建議只是在絕對必要時再考慮使用閉包。

7.2.1 閉包與變量

function createFunctions(){

???????? var result = [];

???????? for(var i=0; i<10; i++){

?????????????????? result[i] = function(num){

??????????????????????????? return function(){

???????????????????????????????????? return num;

??????????????????????????? }

?????????????????? }(i);

???????? }

}

var funcs = createFunctions();

for(var i=0; i<funcs.length; i++){

???????? document.write(funcs[i] + ‘<br />’); //output 0,1,2,3…9

}

7.2.2 this對象

this對象是在運行時基于函數的執行環境綁定的:在全局函數中,this等于window,而當函數被作為某個對象的方法調用時,this等于那個對象。不過,匿名函數的執行環境具有全局性,因此對象通常指向window.

7.2.3 內存泄漏

如果閉包的作用域中保存著一個HTML元素,那么就意味著該元素無法被銷毀。

function assignHandler(){

???????? var element = document.getElementById(‘someElement’);

???????? var id = element.id;

???????? element.onclick = function(){

?????????????????? alert(id);

???????? };

?

???????? element = null; //變量設置為null,才能解除對DOM對象的引用,順利減少引用數,確保正常回收其占用的內存

}

7.3 模仿塊級作用域

匿名函數可以用來模仿塊級作用域:

(function(){

???????? //這里是塊級作用域

})();

將函數聲明包含在一對圓括號中,表示它實際上是一個函數表達式,而緊隨其后的另一對圓括號會立即調用這個函數。

相當于:

var someFunction = function(){};

someFunction();

?

function(){}();

這一段會導致語法錯誤,因為JavaScriptfunction關鍵字當作一個函數聲明的開始,而函數聲明后面不能跟圓括號。然而,函數表達式的后面可以跟圓括號。要將函數聲明轉換成函數表達式,只要加上一對括號即可。

7.4 私有變量

任何在函數中定義的變量,都可以認為是私有變量。因為在函數外部不能訪問這些變量。

把有權訪問私有變量和私有函數的公有方法叫特權方法。

function MyObject(){

???????? //私有變量

???????? var privateVariable = 10;

???????? function privateFunction(){

?????????????????? return false;

???????? }

???????? //特權方法

???????? this.publicMethod = function(){

?????????????????? privateVariable ++;

?????????????????? return privateFunction();

???????? }

}

7.4.1 靜態私有變量

(function(){

???????? var privateVariable = 10;

???????? function privateFunction(){

??????????????????

???????? }

???????? Myobject = function(){??????????????

???????? }

//公有/特權方法

???????? Myobject.prototype.publicMethod = function(){

?????????????????? privateVariable ++;

?????????????????? return privateFunction();

???????? }

})()

這個模式創建了一個私有作用域,并在其中封裝了一個構造函數及相應的方法。

7.4.2 模塊模式

單例創建私有變量和特權方法。所謂單例就是只有一個實例的對象。簡單的語法如下:

var singleton = {

???????? name: value,

???????? method: function(){

//這里是方法

}

}

還可以添加私有變量和特權方法

var singleton = function(){

???????? //私有變量和私有函數

???????? var privateVariable = 10;

???????? function privateFunction(){}

???????? //特權/公有方法和屬性

???????? return {

???????? publicProperty: true,

???????? publicMethod: function(){

???????? privateVariable++;

???????? return privateFunction();

}

}

}

這個模式返回了一個匿名函數,在函數內部,定義私有變量和函數,然后將一個對象字面量作為函數的值返回。返回的對象字面量中只包含可以公開的屬性和方法。

7.4.3 增強的模塊模式

var singleton = function(){

???????? //私有變量和私有函數

???????? var privateVariable = 10;

???????? function privateFunction(){

???????? return false;

}

//創建對象

var object = new CustomType();

//添加特權/僅有屬性和方法

object.publicProperty = true;

object.publicMethod = function(){

???????? privateVariable++;

???????? return privateFunction();

};

return object;

}

轉載于:https://www.cnblogs.com/jikey/archive/2010/10/07/1802068.html

總結

以上是生活随笔為你收集整理的Javascript高级程序设计第二版第七章匿名函数--笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂视频免费看 | 国产精品mm| 欧美日韩一二 | 草av| 国产成人一区二区三区免费看 | 色综合天天综合网国产成人网 | 欧美a一级片 | 国产成人精品一区二区三区网站观看 | 奇米影视一区 | 亚洲国产成人久久 | 亚洲毛片大全 | 色视频2 | a天堂中文网 | 日韩欧美卡一卡二 | 手机在线一区二区三区 | 国产91啪 | 亚洲美女爱爱 | 波多野结衣在线免费观看视频 | 福利国产在线 | 国产爆乳无码一区二区麻豆 | a级黄色小说 | 久久国内免费视频 | 亚洲一区久久久 | 男人桶女人桶爽30分钟 | aa毛片视频| 日本天堂影院 | 国产午夜精品久久久久久久久久 | 欧美视频一区二区在线观看 | 热播网 | 色亚洲视频 | 久久精品日韩无码 | 亚洲国产精一区二区三区性色 | 色七七桃花综合影院 | 无遮挡aaaaa大片免费看 | 六月丁香激情网 | 青青草免费在线观看视频 | 色婷婷在线观看视频 | 91精品人妻一区二区三区蜜桃2 | 手机av中文字幕 | 黑人干亚洲 | 色哟哟网站在线观看 | 亚洲精品久久久久久 | 免费黄色在线网址 | 超碰中文字幕 | 公侵犯人妻一区二区三区 | 欧美性生话| 无码人妻精品一区二区三区不卡 | 一区二区三区免费看 | 亚洲成人黄 | www.人人干| 亚洲最大看欧美片网站 | 亚洲精品美女久久久 | 欧美日本成人 | 国产性猛交╳xxx乱大交一区 | 永久中文字幕 | 成人在线网站 | 国产av人人夜夜澡人人爽 | 国产一区二区三区欧美 | 91福利视频网站 | 中文字幕在线日本 | 国产乱淫a∨片免费视频 | 成年人免费看的视频 | 色综合色婷婷 | 色综合久久久无码中文字幕波多 | 欧美日韩国产一区 | 国产做爰xxxⅹ性视频国 | 水蜜桃av无码 | 日本性高潮视频 | 黄色1级大片 | 第四色影音先锋 | 成人深夜福利在线观看 | av免费国产 | 特级新鲜大片片 | 国产精品久久久久蜜臀 | 欧美大片在线播放 | 男男gay动漫 | 亚洲黄色中文字幕 | 欧美丰满老妇性猛交 | 欧美一区二区三区的 | 中文字幕亚洲乱码 | 色999视频 | 丁香婷婷一区二区三区 | 亚洲无人区码一码二码三码 | 女同性做爰三级 | 国产精品88 | 精品少妇久久 | 久久这里只有精品首页 | 国产xxxx18| 久久夜色精品国产噜噜亚洲av | 日韩欧美国产片 | 欧美久久久久久久久久久久 | 亚洲精品人| 成人欧美一区二区三区黑人一 | 成品人视频ww入口 | 男人天堂黄色 | 午夜秋霞| 91视频精品 | www.国产精品.com | 欧美精品在线一区 |