摘要:靜態(tài)私有變量私有屬性特權(quán)方法模塊模式模塊模式是為單例創(chuàng)建私有變量和特權(quán)方法。單例是只有一個(gè)實(shí)例的對象。私有變量和函數(shù)初始化公共增強(qiáng)的模塊模式這種模式專用于單例必須是某種類型的實(shí)例,同時(shí)還必須添加某些屬性和方法對其加強(qiáng)的情況。
靜態(tài)私有變量
(function(){ //私有屬性 var name = ""; Person = function(value) { name = value; }; //特權(quán)方法 Person.prototype.getName = function() { return name; }; Person.prototype.setName = function(value) { name = value; }; })(); var person = new Person("hiyohoo"); console.log(person.getName()); //hiyohoo person.setName("xujian"); console.log(person.getName()); //xujian模塊模式
模塊模式是為單例創(chuàng)建私有變量和特權(quán)方法。單例是只有一個(gè)實(shí)例的對象。這種模式常用于對單例進(jìn)行某種初始化,同時(shí)又需要維護(hù)其私有變量。
var student = function() { //私有變量和函數(shù) var students = new Array(); //初始化 students.push(new Person()); //公共 return { getStudentCount: function() { return students.length; }, registerStudent: function(person) { if (person instanceof Person) { students.push(person); } } }; }();增強(qiáng)的模塊模式
這種模式專用于單例必須是某種類型的實(shí)例,同時(shí)還必須添加某些屬性和方法對其加強(qiáng)的情況。在下面的例子中,student的值是匿名函數(shù)返回的stu,也就是Person的一個(gè)實(shí)例,這個(gè)實(shí)例有兩個(gè)公共的方法,用于訪問實(shí)例屬性。
var student = function() { //私有變量和函數(shù) var students = new Array(); //初始化 students.push(new Person()); //創(chuàng)建student的一個(gè)局部副本 var stu = new Person; //公共接口 stu.getStudentCount = function() { return students.length; }; stu.registerStudent = function(preson) { if (person instanceof Person) { students.push(person); } }; //返回這個(gè)副本 return stu; }();
轉(zhuǎn)載請注明出處:https://segmentfault.com/a/1190000004590427
文章不定期更新完善,如果能對你有一點(diǎn)點(diǎn)啟發(fā),我將不勝榮幸。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/78885.html
摘要:要想保存在循環(huán)過程中每一個(gè)的值,需要在匿名函數(shù)外部再套用一個(gè)匿名函數(shù),在這個(gè)匿名函數(shù)中定義另一個(gè)變量并且立即執(zhí)行來保存的值。這時(shí)最內(nèi)部的匿名函數(shù)訪問的是的值,所以數(shù)組中個(gè)匿名函數(shù)的返回值就是。才是匿名函數(shù)功能執(zhí)行的環(huán)境。 閉包,有人說它是一種設(shè)計(jì)理念,有人說所有的函數(shù)都是閉包。我不知道如何去定義它,我也不準(zhǔn)備去定義它,定義它就是限制了對它的理解。 我們依賴光來看清世間萬物,光卻遮住了黑...
摘要:上一篇文章距離有出不多一個(gè)多月了現(xiàn)在好不容易有了好心情繼續(xù)看書寫點(diǎn)感悟第三章講述的是封裝像可以通過關(guān)鍵字來聲明一個(gè)方法使得只有該對象內(nèi)部的代碼才能執(zhí)行它在中沒有這樣的關(guān)鍵字但是可以使用閉包來創(chuàng)建只允許從對象內(nèi)部訪問的方法和屬性相比于閉包走了 上一篇文章距離有出不多一個(gè)多月了,現(xiàn)在好不容易有了好心情,繼續(xù)看書,寫點(diǎn)感悟. 第三章講述的是js封裝,像java,可以通過private關(guān)鍵字來...
摘要:閉包的注意事項(xiàng)通常,函數(shù)的作用域及其所有變量都會(huì)在函數(shù)執(zhí)行結(jié)束后被銷毀。但是,在創(chuàng)建了一個(gè)閉包以后,這個(gè)函數(shù)的作用域就會(huì)一直保存到閉包不存在為止。最后通過釋放了和對閉包的引用。從而使用閉包模塊化代碼,減少全局變量的污染。 JavaScript 閉包 原文鏈接 什么是閉包(Closure) 簡單講,閉包就是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)。 MDN 上面這么說:閉包是一種特殊的...
摘要:定義函數(shù)表達(dá)式的方式有兩種函數(shù)聲明。不過,這并不是匿名函數(shù)唯一的用途??梢允褂妹瘮?shù)表達(dá)式來達(dá)成相同的結(jié)果閉包匿名函數(shù)和閉包是兩個(gè)概念,容易混淆。匿名函數(shù)的執(zhí)行環(huán)境具有全局性,因此其對象通常指向通過改變函數(shù)的執(zhí)行環(huán)境的情況除外。 定義函數(shù)表達(dá)式的方式有兩種: 函數(shù)聲明。它的重要特征就是 函數(shù)聲明提升(function declaration hoisting) 即在執(zhí)行代碼之前會(huì)...
摘要:在代碼執(zhí)行時(shí),對應(yīng)的作用域鏈常常是保持靜態(tài)的。當(dāng)語句執(zhí)行完畢后,會(huì)把作用域鏈恢復(fù)到原始狀態(tài)。在全局作用域中創(chuàng)建的函數(shù),其作用域鏈會(huì)自動(dòng)成為全局作用域中的一員。 列表項(xiàng)目 前言 學(xué)習(xí)了javascript已經(jīng)很久了,關(guān)于這個(gè)語言中的這兩個(gè)特性也是早已耳熟能詳,但是在實(shí)際的使用的過程中或者是遇到相關(guān)的問題的時(shí)候,還是不能很好的解決。因此我覺得很有必要深入的學(xué)習(xí)并且記錄這個(gè)問題,以便在今后的...
閱讀 2808·2023-04-26 02:28
閱讀 2695·2021-09-27 13:36
閱讀 3196·2021-09-03 10:29
閱讀 2852·2021-08-26 14:14
閱讀 2174·2019-08-30 15:56
閱讀 909·2019-08-29 13:46
閱讀 2676·2019-08-29 13:15
閱讀 510·2019-08-29 11:29