第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript中閉包模仿對象私有屬性的問題?

JavaScript中閉包模仿對象私有屬性的問題?

泛舟湖上清波郎朗 2018-12-26 18:19:26
看高程書,里面有一個章節(jié)是關(guān)于JavaScript模擬OOP中的對象私有屬性。請看這段代碼<script>            function Person(name)        {            this.getName = function(){                return name;            }            this.setName = function(newName){                name = newName;            }        }        var lily = new Person("Lily");        var lucy = new Person("Lucy");        lily.setName("I am Lily");        lucy.setName("I am Lucy");          println(lily.getName());    // I am Lily        println(lucy.getName());    // I am Lucy        function println(obj)        {            console.log(obj + "\n");        }</script>我對閉包的理解是,閉包函數(shù)的[[Scope]]持有了一個外部函數(shù)的活動對象引用。所以閉包能訪問外部函數(shù)的局部變量。而且訪問的值是外部函數(shù)局部變量最后一次更改的值。那在我這個例子中,外部函數(shù)的name變量最后一次更改是這個語句lucy.setName("I am Lucy"); 為什么兩個lily、lucy兩個對象依然可以打印各自不同的值。而不是最后一次更改的值。雖然這lucy和lily的閉包不是同一個閉包,可是這兩個閉包持有的外部函數(shù)活動對象不都是Person函數(shù)的活動對象嗎。println(lily.getName()); // I am Lilyprintln(lucy.getName()); // I am Lucy
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

你想的應(yīng)該是只實例化一個對象。


function Person(name){

   this.getName = function(){

       return name;

   }

   this.setName = function(newName){

       name = newName;

   }

}


var temp = new Person()

var lily = temp.setName('Lily')

var lucy = temp.setName('Lucy')


println(temp.getName())


function println(obj){

    console.log(obj + "\n");

}


查看完整回答
反對 回復 2019-01-29
  • 1 回答
  • 0 關(guān)注
  • 419 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號