1.環境對象的定義
環境對象指的是函數內的特殊變量this,this指向函數的調用者它代表當前函數的運行環境
在平常我們判斷this經常用口訣誰調用它,它就指向誰,以下是幾種常見情況
? 1. 在全局作用域中,this指向window
? ?2.在函數中,他也指向他的調用者,如果是用函數名調用,則相當于window調用該函數,所以this指向window,如果是作為對象的方法調用時指向該對象
function fn() {console.log(1)}fn()//指向window
?
onst obj = {name: "Alice",greet: function() {console.log(`Hello, ${this.name}!`);}
};obj.greet();
?3. 在構造函數new..,this指向正在 創建的新對象
function Person(name) {this.name = name;
}const alice = new Person("Alice");
console.log(alice.name);
? ?4.在監聽事件中,this指向事件源
const div = document.querySelector('div')div.addEventListener('click',function(){console.log(1)//此時this指向div})
5.箭頭函數沒有自己的this,它的this繼承于外層作用域
2.構造函數
構造函數是一種特殊的函數,用于創建和初始化對象。
構造函數通常以大寫字母開頭,通過new調用
而用new調用構造函數創建一個新的對象的過程
1.創建一個新的對象
2.將this綁定到新對象上
3.初始化對象的屬性/方法(函數)
4。返回這個新對象
function Person(name, age) {this.name = name;this.age = age;this.greet = function() {console.log(`Hello, I'm ${this.name}!`);};
}// 使用 new 創建實例
const alice = new Person("Alice", 25);
alice.greet(); // 輸出: Hello, I'm Alice!
在日常寫代碼時弄清楚這倆樣東西能為我們寫代碼帶來很大的便利。