題目來源於前端面試寶典——選擇題欄 習題 class Counter { // 二、count 屬性被包含在類 Counter 的構造函數與 increment 方法。 constructor() { this.count = 0 } increment() { this.count++ } } / ...
題目來源於前端面試寶典——選擇題欄
習題
class Counter {
// 二、count 屬性被包含在類 Counter 的構造函數與 increment 方法。
constructor() {
this.count = 0
}
increment() {
this.count++
}
}
// 一、counterOne 成為 類 Counter 的一個實例
const counterOne = new Counter()
// 三、根據二的內容,現在調用方法兩次,因此 counterOne.count 為 2
counterOne.increment()
counterOne.increment()
/*
* 四、
* 創建一個新的變數 counterTwo 並將 counterOne 的引用地址賦值給它。
* 因為對象受引用地址的影響,剛剛創建了一個新的對象,其引用地址和 counterOne 的等價。
* 因此它們指向同一塊記憶體地址,任何對其的副作用都會影響 counterTwo。
*/
const counterTwo = counterOne
// 調用 counterTwo.increment() 將 count 的值設為 3
counterTwo.increment()
console.log(counterOne.count) //所以結果為3
總結
當創建一個實例後,經過一系列類方法定義的操作後,如果再創建一個新的變數,然後把實例賦值給該新變數,那麼新變數調用的類方法,也會影響到原實例,因為引用地址一致。