[JavaScriptのクリーンアップ]コンテキスト3を実行します.this
14389 ワード
this = 클래스로 생성한 인스턴스 객체
= 실행 컨텍스트가 생성될 때 함께 결정됨(실행컨텍스트가 실행될 때 = 함수가 호출될 때)
= 해당 함수를 호출한 주체에 대한 정보를 가지고 있다.
グローバルスペース
= 클래스로 생성한 인스턴스 객체
= 실행 컨텍스트가 생성될 때 함께 결정됨(실행컨텍스트가 실행될 때 = 함수가 호출될 때)
= 해당 함수를 호출한 주체에 대한 정보를 가지고 있다.
let a = 1;
a = window.a = this.a;
メソッドのthis
メソッド=JavaScriptでは関数と非常に似ていますが、関数とは異なり独立性はありません.
let a = function (b) {
console.log(this, b)
}
a('a'); //여기서 this는 전역객체(window)
let c = { method: a };
c.a('a'); // 여기서 this는 c 객체
関数のthis
let a = {
outer: function () {
console.log(this);
let inner = function () {
console.log(this);
}
inner(); // this = window
let b = {innerMethod: inner};
b.innerMethod(); // this = b
}
}
a.outer(); // this = a
- 함수앞에 .이나 []가 있는지 없는지가 this를 판별하는 방법임.(메서드인지 함수인지, 메서드면 this는 앞에 객체, 함수면 this는 전역 객체)
bind
let a = {
outer: function () {
console.log(this); // this = outer
let innerfunc = function () {
console.log(this);
};
innerfunc(); // this(innerfunc의 this) = window
let self = this; // outer의 this를 담음
let innerfunc2 = function () {
console.log(self);
};
innerfunc2(); // this = outer
}
};
obj.outer();
=このアイテムはバインドされません.
=thisにアクセスする場合は、最近のthisにアクセスします.
let obj2 = {
outer: function() {
let inner = () => {
console.log('this',this);
};
inner(); ///this = outer
}
};
3. 생성자 함수 내부에서
- 클래스 = 생성자, 인스턴스 = 클래스로 만든 객체.
- 자바스크립트에서는 함수가 생성자의 역할을 가진다.
- 예시
```javascript
let Cat = function (name, age) {
this.name = name;
this.age = age;
}; //생성자
let choco = new Cat('choco', 2); // {name: 'choco', age: 2} --> 인스턴스
let abc = function (x){
console.log(this, x);
};
let bindabc = abc.bind({x: 1}, 1); ///첫번째 인자에 바인딩 되고 추가로 인자를 넘겨줄 수 있음.
bindabc(); // this = {x:1}
let abc = function (x){
console.log(this, x);
};
let callabc = abc.call({x: 1}, 1); ///첫번째 인자에 바인딩 되고 추가로 인자를 넘겨줄 수 있음.
let applyabc = abc.apply({x:1}, [1]); //call과 같지만 추가 인자가 배열로 들어감
callabc; // this = {x:1} , 1
applyabc; // this = {x:1}, undefined
Reference
この問題について([JavaScriptのクリーンアップ]コンテキスト3を実行します.this), 我々は、より多くの情報をここで見つけました https://velog.io/@kangko05/자바스크립트-정리-thisテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol