이 글의 내용은 이게 무엇일까요? 이 글은 여러분이 단 몇 초만에 이해할 수 있도록 도와줍니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 일상적인 개발에서 우리는 이것으로 지적되는 버그를 자주 접하게 됩니다. 오랫동안 우울하다가 갑자기 깨어나서 그 고통으로부터 교훈을 얻어 앞으로의 개발 작업에서 우회하는 일이 없도록 정리했습니다.
참고: 이 글은 브라우저 환경에만 해당됩니다.
1: 전역 실행
console.log(this); // Window
전역 범위에서 이는 현재 전역 객체 Window를 가리킨다는 것을 알 수 있습니다.
2: 함수에서의 실행
1 비엄격 모드에서
function func () { console.log(this); } func(); // Window
2. # 🎜🎜#
"use strict"; function func () { console.log(this); } func(); // undefined
3: 객체로서의 메소드 호출
함수가 객체의 메소드로 호출될 때, 이는 현재 객체를 가리킵니다. obj:var obj = { name: 'kk', func: function () { console.log(this.name); } } obj.func(); // kk
var obj = { name: 'kk', func: function () { console.log(this); } } var test = obj.func; test(); // Window
Four: 다음으로 사용됩니다. constructor
JS에서는 클래스를 구현하려면 일부 생성자를 정의하고 생성자를 호출할 때 new 키워드를 추가해야 합니다.function Person (name) { this.name = name; console.log(this); } var p1 = new Person('kk'); // Person
function Person (name) { this.name = name; console.log(this); } var p2 = Person('MM'); // Window
5를 가리킵니다. 타이머 사용
setInterval(function () { console.log(this); }, 2000) // Window setTimeout(function () { console.log(this); }, 0) // Window
Six: 화살표 함수
전역 환경에서 호출:var func = () => { console.log(this); } func(); // Window
var obj = { name: 'hh', func: function () { setTimeout(function () { console.log(this); }, 0) } } obj.func(); // Window var obj = { name: 'hh', func: function () { setTimeout(() => { console.log(this); }, 0) } } obj.func(); // obj
세븐: 호출, 적용, 바인드
call: fun.call(thisArg[, arg1[ , arg2[, …]]]) 첫 번째 매개변수는 실행 함수에서 이것의 컨텍스트를 지정하며, 다음 매개변수는 전달되어야 하는 매개변수입니다. #🎜 🎜#apply:
fun.apply(thisArg, [argsArray])
또한 함수가 즉시 실행됩니다. 첫 번째 매개변수는 지정된 실행 함수이고, 두 번째 매개변수는 실행 함수에 전달되는 매개변수입니다(호출과 다름).
bind:
# 🎜🎜#var foo = fun.bind (thisArg[, arg1[, arg2[, …]]]) It는 함수를 실행하지 않지만 새 함수를 반환합니다. 이 컨텍스트를 할당하고 나중에 매개변수는 함수를 실행하기 위해 전달해야 하는 매개변수입니다. 예를 살펴보겠습니다.function Person(name, age) { this.name = name; this.age = age; console.log(this); } var obj = { name: 'kk', age: 6 }; Person.call(obj, 'mm', 10); // obj,{name: "mm", age: 10} Person.apply(obj, ['mm', 10]); // obj,{name: "mm", age: 10} var p1 = Person.bind(obj, 'mm', 10) var p2 = new p1(); // Person {name: "mm", age: 10}
var name = "hh"; var obj = { name : "kk", func1: function () { console.log(this.name) }, func2: function () { setTimeout(function () { this.func1() }, 1000); } }; obj.func2(); // Uncaught TypeError: this.func1 is not a function
var name = "hh"; var obj = { name : "kk", func1: function () { console.log(this.name) }, func2: function () { setTimeout(() => { this.func1() }, 1000); } }; obj.func2(); // kk
var name = "hh"; var obj = { name : "kk", func1: function () { console.log(this.name) }, func2: function () { let _this = this; setTimeout(function () { _this.func1() }, 1000); } }; obj.func2(); // kk
위 내용은 이것이 무엇인지에 대한 설명입니다. JavaScript Tutorial에 대해 더 알고 싶다면 PHP 중국어 웹사이트를 주목하세요.
위 내용은 이게 뭔가요? 하나의 기사는 이것을 몇 초 안에 이해하는 데 도움이 될 것입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!