国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入理解JavaScript中的塊級(jí)作用域、私有變量與模塊模式

2019-11-20 08:37:50
字體:
供稿:網(wǎng)友

本文詳細(xì)的介紹了JavaScript中的塊級(jí)作用域、私有變量與模塊模式,廢話就不多說了,具體如下:

1.塊級(jí)作用域(私有作用域),經(jīng)常在全局作用域中被用在函數(shù)外部,從而限制向全局作用域中添加過多的變量和函數(shù)。

(function(count){   for(var i=0;i<count;i++){     console.log(i);//=>0、1、2、3、4   }   console.log(i);//=>5 })(5); 
(function(){   var now=new Date();   if(now.getMonth()==0 && now.getDate()==1){     console.log("新年快樂");   }else{     console.log("盡情期待");   } })(); 

 2.私有變量:任何在函數(shù)中定義的變量,都可以認(rèn)為是私有變量,因?yàn)椴荒茉诤瘮?shù)的外部訪問這些變量。

特權(quán)方法:有權(quán)訪問私有變量和私有函數(shù)的公有方法稱為特權(quán)方法。

2.1)在構(gòu)造函數(shù)中定義特權(quán)方法:

 function Person(name){   this.getName=function(){     return name;   };   this.setName=function(value){     name=value;   }; } var person1=new Person("Jason"); console.log(person1.getName());//=>Jason person1.setName("gray"); console.log(person1.getName());//=>gray var person2=new Person("Michael"); console.log(person1.getName());//=>gray console.log(person2.getName());//=>Michael person2.setName('Alex'); console.log(person1.getName());//=>gray console.log(person2.getName());//=>Alex 

構(gòu)造函數(shù)模式的缺點(diǎn)是針對(duì)每個(gè)實(shí)例都會(huì)創(chuàng)建同樣一組新方法。

2.2)靜態(tài)私有變量來實(shí)現(xiàn)特權(quán)方法

在私有作用域中,首先定義私有變量和私有函數(shù),然后定義構(gòu)造函數(shù)及其公有方法。

 (function(){   //私有變量和函數(shù)   var name="";   Person=function(value){     name=value;   };   //特權(quán)方法   Person.prototype.getName=function(){     return name;   };   Person.prototype.setName=function(value){     name=value;   } })(); var person1=new Person("Jason"); console.log(person1.getName());//=>Jason person1.setName("gray"); console.log(person1.getName());//=>gray var person2=new Person("Michael"); console.log(person1.getName());//=>Michael console.log(person2.getName());//=>Michael person2.setName('Alex'); console.log(person1.getName());//=>Alex console.log(person2.getName());//=>Alex 

3.模塊模式:通過為單例添加私有變量和特權(quán)方法能夠使其得到增強(qiáng)。

如果必須創(chuàng)建一個(gè)對(duì)象并以某些數(shù)據(jù)對(duì)其進(jìn)行初始化,同時(shí)還要公開一些能夠訪問這些私有數(shù)據(jù)的方法,那么就可以使用模塊模式。

var application=function(){   //私有變量和函數(shù)   var components=[];   //初始化   components.push(new BaseComponent());   //公共接口   return {     getComponentCount:function(){       return components.length;     },     registerComponent:function(){       if(typeof component=="object"){         components.push(component);       }     }   } }(); 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁甸县| 张家港市| 柳河县| 福安市| 孝昌县| 衡山县| 大姚县| 平凉市| 康平县| 灯塔市| 普洱| 黎川县| 双辽市| 梁平县| 湘乡市| 潞城市| 海南省| 富蕴县| 班戈县| 龙游县| 宁都县| 甘孜县| 子长县| 岳普湖县| 汽车| 徐汇区| 略阳县| 金堂县| 黑山县| 习水县| 威海市| 金昌市| 云和县| 丰顺县| 洛南县| 巨鹿县| 霍城县| 高陵县| 穆棱市| 宁都县| 布尔津县|