728x90
this.x = 9;
var module = {
x: 81,
getX: function() { return this.x; }
};
module.getX(); // 81
var retrieveX = module.getX;
retrieveX();
// 9 ๋ฐํ - ํจ์๊ฐ ์ ์ญ ์ค์ฝํ์์ ํธ์ถ๋์
// module๊ณผ ๋ฐ์ธ๋ฉ๋ 'this'๊ฐ ์๋ ์๋ก์ด ํจ์ ์์ฑ
// ์ ์
ํ๋ก๊ทธ๋๋จธ๋ ์ ์ญ ๋ณ์ x์
// module์ ์์ฑ x๋ฅผ ํผ๋ํ ์ ์์
var boundGetX = retrieveX.bind(module);
boundGetX(); // 81
this.name ='์๋';
let person1 = {
name: '์๋ฌด๋ฌด'
};
let person2 = {
name: '๋ญ์ค',
study: function() {
console.log(this.name + '์ด/๊ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค.');
}
};
person2.study(); // ๋ญ์ค์ด/๊ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค.
let fullStudy = person2.study;
fullStudy(); //์๋์ด/๊ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค.
// bind()
let student = person2.study.bind(person1);
student(); // ์๋ฌด๋ฌด์ด/๊ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค.
Bind
func.bind(thisArg[, arg1[, arg2[, ...]]])
- thisArg: ๋ฐ์ธ๋ฉ ํจ์๊ฐ ํ๊ฒ ํจ์์ this์ ์ ๋ฌํ๋ ๊ฐ
- arg1, arg2, … : func์ด ํธ์ถ๋์ด์ผ ํ๋ ์ธ์
- bind()๋ ์๋กญ๊ฒ ๋ฐ์ธ๋ฉํ ํจ์๋ฅผ ๋ง๋ ๋ค. ๋ฐ์ธ๋ฉํ ํจ์๋ ์๋ณธ ํจ์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ธ๋ ํจ์์ด๋ค. bind()๋ call(), apply()์ ๊ฐ์ด ํจ์๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ this๋ฅผ ๋ฐ๊พธ์ง๋ง ํธ์ถ๋์ง๋ ์๋ค. ๋ฐ๋ผ์ ๋ณ์๋ฅผ ํ ๋นํ์ฌ ํธ์ถํ๋ ํํ๋ก ์ฌ์ฉ๋๋ค.
Function.prototype.bind() - JavaScript | MDN
bind() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ์๋ก์ด ํจ์๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐ๊ฒ๋๋ ์ฒซ ์ธ์์ value๋ก๋ this ํค์๋๋ฅผ ์ค์ ํ๊ณ , ์ด์ด์ง๋ ์ธ์๋ค์ ๋ฐ์ธ๋๋ ํจ์์ ์ธ์์ ์ ๊ณต๋ฉ๋๋ค.
developer.mozilla.org
728x90
'Javascript > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฐ์ด์ ํจ์๋ค (0) | 2022.07.22 |
---|---|
[Js] ๋ฐฐ์ด ์์ฑ (0) | 2022.07.22 |
[์๋ฐ์คํฌ๋ฆฝํธ] ์ฑ๊ธ์ค๋ ๋, ๋น๋๊ธฐ์ฒ๋ฆฌ, ์ฝ๋ฐฑํจ์ (0) | 2022.05.29 |
[์๋ฐ์คํฌ๋ฆฝํธ] ๋งค๊ฐ๋ณ์, ์ธ์ ์ฉ์ด ์ฐจ์ด (0) | 2022.05.27 |
[์๋ฐ์คํฌ๋ฆฝํธ] ์ต๋ช ํจ์, ํ์ดํ ํจ์, ์ฝ๋ฐฑํจ์ (0) | 2022.05.22 |