對js中this指標的一些研究

研究猿小劉發表於2020-10-14

1. 請看這段程式碼

this.x=1
var that=this
that.x=2
console.log(that.x)
console.log(this.x)

隨便代開一個瀏覽器按下f12,(聯想筆記本需要按Fn+f12),輸入那段程式碼,會發現

當that=this時,that的值修改,this的值也會隨著that的修改而修改
在這裡插入圖片描述

2. 再看一組

var a=1
var b=a
b=2
console.log(a)
console.log(b)

從輸出結果可以看出當a,b為數時,a=b,b的改變不會改變a的值
在這裡插入圖片描述

3.語法錯誤

var a.x=1
var b=a
b.x=2
console.log(a)
console.log(b)

在這裡插入圖片描述

4.this 是什麼?我們來列印一下

在這裡插入圖片描述

js的資料型別

var length = 7;                             // 數字
var lastName = "Gates";                      // 字串
var cars = ["Porsche", "Volvo", "BMW"];         // 陣列
var x = {firstName:"Bill", lastName:"Gates"};    // 物件
var x; //undefined

如果一個變數只是被定義而沒有被初始化那麼他的型別就是undefined
在這裡插入圖片描述

如果一個變數沒有被定義就會報錯(引出下面5這個問題)
在這裡插入圖片描述

5.js中有沒有不用定義直接拿來用而且還不報錯的變數?

答案是 this 變數 通過 4就可以的出結論了
定義了反而報錯,

6.使用this 變數來當做一個全域性變數,當有人指向它時(即把它賦值給某人),這個人的所有變數都能通過this拿到

this.x=1
var that=this
that.x=2
that.y=3
console.log(that.x)
console.log(this.x)
console.log(this.y)

在這裡插入圖片描述

相關文章