国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

20170607-私有變量

trilever / 971人閱讀

摘要:私有變量任何在函數中定義的變量,都可以認為是私有變量,因為在不能再函數的外部訪問這些變量。我們把有權訪問私有變量和私有函數的公有方法稱為特權方法。模塊模式模塊模式是為單例創建私有變量和特權方法。

私有變量

任何在函數中定義的變量,都可以認為是私有變量,因為在不能再函數的外部訪問這些變量。私有變量包括函數的參數、函數中定義的變量和函數。我們把有權訪問私有變量和私有函數的公有方法稱為特權方法。

function MyObject(number){
    // 私有變量和私有函數,number也是私有變量
    var privateVariable = 10
    function privateFunction(){
        return false
    }
    
    // 特權方法
    this.publicMethod = function(){
        number++
        privateVariable++
        return privateFunction()
    }
}

var myobject = new MyObject()

在創建MyObject的實例后,除了使用publicMethod這一個途徑外,沒有任何辦法可以直接訪問privateVariable和privateFunction以及number,利用私有和特權成員,可以隱藏哪些不應該被直接修改的數據。

靜態私有變量
(function(){
    var name = ""
    var privateVariable = 10
    function privateFunction(){
        return false
    }
    // 沒有在聲明Person時使用var關鍵字,則會創建一個全局變量
    Person = function(value){
        name = value
    }
    
    Person.prototype.getName = function(){
        return name
    }
    
    Person.prototype.setName = function(value){
        name = value
    } 
})()

var person1 = new Person("Nicholas")
alert(person1.getName()) // "Nicholas"
person1.setName("Greg")
alert(person1.getName()) // "Greg"

var person2 = new Person("Michael")  
alert(person1.getName())  // "Michael"  // 私有變量和私有函數是由所有實例共享的
alert(person2.getName()) // "Michael"

這個模式與在構造函數中定義特權方法的主要區別,就在于私有變量和私有函數是由所有實例共享的。由于特權方法是在原型上定義的,因此所有實例都使用同一個特權方法。而這個特權方法,作為一個閉包,總是保存著對包含作用域的引用。

模塊模式

模塊模式(module pattern)是為單例創建私有變量和特權方法。所謂單例,指的就是只有一個實例的對象。按照慣例,使用對象字面量的方式來創建單例對象.

var module = function(){
    var privateVariable = 10
    function privateFunction(){
        return false    
    }
    
    return {
        publicProperty: true,
        
        publicMethod: function(){
            privateVariable++
            return privateFunction()
        }    
    }
}

如果必須創建一個對象并以某些數據進行初始化,同時還要公開一些能夠訪問這些私有數據的方法,那么就可以使用模塊模式。

var application = function(){
    var components = new Array()
    components.push(new BaseComponent())
    
    return {
        getComponentCount: function(){
            return components.length
        },
        registerComponent: function(component){
            if(typeof component === "object"){
                components.push(component)
            }
        }
    }
}()
增強的模塊模式

增強的模塊模式適合那些單例必須是某種類型的實例,同時還必須添加某些屬性和方法對其加以增強的情況.

var application = function(){
    var components = new Array()
    components.push(new BaseComponent())
    // 單例必須是某種類型的實例
    var app = new ComponentList()
    
    app.getComponentCount = function(){
        return components.length
    }
    app.registerComponent = function(component){
        if(typeof component === "object"){
            components.push(component)
        }
    }
    return app
}()

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

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83382.html

相關文章

  • 20170607-面向對象03-判斷對象類型的方法

    摘要:這種方法也存在這樣的問題如果修改了構造函數的原型對象,之前創建的對象無法通過這種方式來確定類型修改構造函數的原型對象會導致之前創建的對象無法通過這種方式判斷類型判斷對象繼承自哪些父類型使用使用 判斷對象類型的方法 使用原型對象上的constructor屬性來判斷 每個對象的原型上都有一個constructor屬性,指向了其構造函數 注意:對象沒有constructor屬性(除非自己添加...

    zhoutao 評論0 收藏0
  • 20170607-面向對象02-繼承

    摘要:繼承原型鏈原型鏈是實現繼承的主要方法。臨時的構造函數將傳入的對象作為這個構造函數的原型返回新實例以為原型創建一個新實例不僅屬于所有,而且也會被共享。上訴例子只調用了一次構造函數,因此避免了在上面創建不必要的多余的屬性。 繼承 1 原型鏈 原型鏈是實現繼承的主要方法。其基本思想是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法。 構造函數、原型和實例的關系 每個構造函數都有一個原型對...

    lushan 評論0 收藏0
  • 20170607-面向對象01-創建對象

    摘要:原型對象的問題省略了為構造函數傳遞參數,導致了所有實例在默認情況下都取得相同的屬性值。即使有其他代碼會給這個對象添加方法或數據成員,但也不可能有別的方法訪問傳入到構造函數中的原始數據。 創建對象 1.Object構造函數 創建一個Object的實例,然為其添加屬性和方法(早期創建對象的模式) var person = new Object(); person.name = Nichol...

    NusterCache 評論0 收藏0
  • mybatis 入門搭建

    摘要:首先導包依賴如下構建應用是以為中心的實例可以通過獲得其中是工廠接口任務用于創建配置文件將會解析配置文件在類對象中配置獲取數據源事務管理器映射器在文件下新建文件配置文件內容如下定義別名定義數據庫信息事物管理 首先導包 依賴如下 mysql mysql-connector-java 8.0.15 org.m...

    enali 評論0 收藏0
  • web開發模式

    摘要:顯示層控制層數據層統一交給或者處理處理流程客戶端發送到執行讀取返回返回給在返回給在給客戶端問題代碼雜亂即方式客戶端發送到然后執行用于讀取控制器獲取到讀取的數據以后再次返回給生成文件給客戶端分為顯示層控制層模型層屬于提供的分布式組件服務分 Model1 顯示層,控制層,數據層,統一交給jsp或者javabean處理. 處理流程 客戶端發送request 到 jsp jsp 執行java...

    ztyzz 評論0 收藏0

發表評論

0條評論

trilever

|高級講師

TA的文章

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