자바스크립트는 매우 유연한 언어라고 합니다. 사실은 혼란스러운 언어라고도 할 수 있습니다. 관심 있는 친구들은 이 글을 통해 자바스크립트에 대한 지식을 공유해 보세요. together
누구나 자바스크립트라고 합니다. 헷갈리는 언어라고도 할 수 있는 매우 유연한 언어입니다. 함수형 프로그래밍과 객체지향 프로그래밍을 결합하고 동적 언어 기능을 결합하여 매우 강력합니다(사실 C++와 비교할 수 없습니다, ^_^).
JS
이 함수 내부에서 생성됩니다.
호출 시 함수에 바인딩된 개체를 가리킵니다(勗구).
할당할 수는 없지만 호출할 수는 있습니다/ 적용
디렉토리 변경
* 특별한 경우
* 심사 시작
* 규칙 1: 객체 메소드의 this는 객체 자체를 가리킵니다(화살표 함수 형식 제외)
* 규칙 2 : 다단계 중첩 함수 This는 this를 포함하는 최신 함수와 동일한 this
를 가리킵니다. * 규칙 3: 화살표 함수 및 비포인팅 객체 메서드의 함수의 경우 this는 window
* 연습 세트를 가리킵니다.
* * 일반 함수의 This * 함수 실행 후 다른 함수에서 this를 반환합니다(일반 함수에서)
* * 다중 레벨 중첩 함수의 This(타이머 및 화살표 함수) 1
* * 다중 레벨 중첩 함수의 This( 타이머 및 화살표 기능) 2
특수 사례
본격적으로 시작하기 전에, 특례에 대해 이야기해보겠습니다.// 构造函数 function Student(name) { this.name = name } // 创建小明和小红两个实例 var XM = new Student('xiaoming') var XH = new Student('xiaohong') // 输出信息 console.log(XM) // Student {name: "xiaoming"} console.log(XH) // Student {name: "xiaohong"}
판단 시작
다음은 전형적인 예이며, 여기서부터 분석이 시작됩니다.var x = { name: 'bw2', getName1: function() { console.log(this) }, getName2: function() { setTimeout(() => { console.log(this) },0) }, getName31: () => { console.log(this) }, getName32: function() { return function() { console.log(this) } } } x.getName1() // {name: "bw2", getName1: ƒ} x.getName2() // {name: "bw2", getName1: ƒ} x.getName31() // Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …} x.getName32()() // Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …}
var x = { name: 'bw2', getName1: function() { console.log(this) } } x.getName1() // {name: "bw2", getName1: ƒ}
var x = { name: 'bw2', getName2: function() { console.log(this) // 等同于此处的this setTimeout(() => { console.log(this) // 原始的this位置 },0) } } x.getName2() // {name: 'bw2', getName1: ƒ}
var x = { name: 'bw2', getName31: () => { console.log(this) }, getName32: function() { return function() { console.log(this) } } } x.getName31() // Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …} x.getName32()() // Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …}
일반 함수의 This
function x() { console.log(this) } x()
function xx(){ return function() { console.log(this) } } xx()()
var x = { name: 'bw2', getName: () => { setTimeout(() => { console.log(this) },0) } } x.getName()
var x = { name: 'bw2', getName: () => { setTimeout(function() { console.log(this) },0) } } x.getName()
위 내용은 JavaScript에서 이것이 가리키는 위치를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!