成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【JavaScript】通過閉包創(chuàng)建具有私有屬性的實例對象

MingjunYang / 1517人閱讀

摘要:靜態(tài)私有變量私有屬性特權方法模塊模式模塊模式是為單例創(chuàng)建私有變量和特權方法。單例是只有一個實例的對象。私有變量和函數初始化公共增強的模塊模式這種模式專用于單例必須是某種類型的實例,同時還必須添加某些屬性和方法對其加強的情況。

靜態(tài)私有變量
(function(){
    //私有屬性
    var name = "";
    Person = function(value) {
        name = value;
    };
    //特權方法
    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)建私有變量和特權方法。單例是只有一個實例的對象。這種模式常用于對單例進行某種初始化,同時又需要維護其私有變量。

var student = function() {
    //私有變量和函數
    var students = new Array();
    //初始化
    students.push(new Person());
    //公共
    return {
        getStudentCount: function() {
            return students.length;
        },
        registerStudent: function(person) {
            if (person instanceof Person) {
                students.push(person);
            }
        }
    };
}();
增強的模塊模式

這種模式專用于單例必須是某種類型的實例,同時還必須添加某些屬性和方法對其加強的情況。在下面的例子中,student的值是匿名函數返回的stu,也就是Person的一個實例,這個實例有兩個公共的方法,用于訪問實例屬性。

var student = function() {
    //私有變量和函數
    var students = new Array();
    //初始化
    students.push(new Person());
    //創(chuàng)建student的一個局部副本
    var stu = new Person;
    //公共接口
    stu.getStudentCount = function() {
        return students.length;
    };
    stu.registerStudent = function(preson) {
        if (person instanceof Person) {
            students.push(person);
        }
    };
    //返回這個副本
    return stu;
}(); 

轉載請注明出處:https://segmentfault.com/a/1190000004590427

文章不定期更新完善,如果能對你有一點點啟發(fā),我將不勝榮幸。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/78885.html

相關文章

  • JavaScript】【函數】閉包閉包!

    摘要:要想保存在循環(huán)過程中每一個的值,需要在匿名函數外部再套用一個匿名函數,在這個匿名函數中定義另一個變量并且立即執(zhí)行來保存的值。這時最內部的匿名函數訪問的是的值,所以數組中個匿名函數的返回值就是。才是匿名函數功能執(zhí)行的環(huán)境。 閉包,有人說它是一種設計理念,有人說所有的函數都是閉包。我不知道如何去定義它,我也不準備去定義它,定義它就是限制了對它的理解。 我們依賴光來看清世間萬物,光卻遮住了黑...

    he_xd 評論0 收藏0
  • 封裝

    摘要:上一篇文章距離有出不多一個多月了現在好不容易有了好心情繼續(xù)看書寫點感悟第三章講述的是封裝像可以通過關鍵字來聲明一個方法使得只有該對象內部的代碼才能執(zhí)行它在中沒有這樣的關鍵字但是可以使用閉包來創(chuàng)建只允許從對象內部訪問的方法和屬性相比于閉包走了 上一篇文章距離有出不多一個多月了,現在好不容易有了好心情,繼續(xù)看書,寫點感悟. 第三章講述的是js封裝,像java,可以通過private關鍵字來...

    Ethan815 評論0 收藏0
  • JavaScript 閉包

    摘要:閉包的注意事項通常,函數的作用域及其所有變量都會在函數執(zhí)行結束后被銷毀。但是,在創(chuàng)建了一個閉包以后,這個函數的作用域就會一直保存到閉包不存在為止。最后通過釋放了和對閉包的引用。從而使用閉包模塊化代碼,減少全局變量的污染。 JavaScript 閉包 原文鏈接 什么是閉包(Closure) 簡單講,閉包就是指有權訪問另一個函數作用域中的變量的函數。 MDN 上面這么說:閉包是一種特殊的...

    zhou_you 評論0 收藏0
  • JavaScript高級程序設計》(第3版)讀書筆記 第7章 函數表達式

    摘要:定義函數表達式的方式有兩種函數聲明。不過,這并不是匿名函數唯一的用途??梢允褂妹瘮当磉_式來達成相同的結果閉包匿名函數和閉包是兩個概念,容易混淆。匿名函數的執(zhí)行環(huán)境具有全局性,因此其對象通常指向通過改變函數的執(zhí)行環(huán)境的情況除外。 定義函數表達式的方式有兩種: 函數聲明。它的重要特征就是 函數聲明提升(function declaration hoisting) 即在執(zhí)行代碼之前會...

    鄒立鵬 評論0 收藏0
  • javascript中關于作用域和閉包

    摘要:在代碼執(zhí)行時,對應的作用域鏈常常是保持靜態(tài)的。當語句執(zhí)行完畢后,會把作用域鏈恢復到原始狀態(tài)。在全局作用域中創(chuàng)建的函數,其作用域鏈會自動成為全局作用域中的一員。 列表項目 前言 學習了javascript已經很久了,關于這個語言中的這兩個特性也是早已耳熟能詳,但是在實際的使用的過程中或者是遇到相關的問題的時候,還是不能很好的解決。因此我覺得很有必要深入的學習并且記錄這個問題,以便在今后的...

    zacklee 評論0 收藏0

發(fā)表評論

0條評論

MingjunYang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<