var data = 10; // window.data
function outer(){
this.data = 20; // 전역변수 data를 20으로 바꿈
data = 30; // 전역변수 data를 30으로 바꿈
console.log("1.data: " + data); // 30
console.log("2. this.data: " + this.data); //30
console.log("3. window.data: " + window.data); //30
}
outer();
function MyClass(){
this.data = 0;
}
MyClass.prototype.method1 = function(){
this.data = 20;
data = 30;
console.log("1. data: " + data); // 30
console.log("2. this.data: " + this.data); // 20
console.log("3. window.data: " + window.data); // 30
}
let m1 = new MyClass();
m1.method1();
var data = 10;
window.onload = function(){
var btn = document.getElementById("btn");
btn.onclick = function(){
this.data = 20;
data = 30;
console.log("1. data: " + data); // 30
console.log("2. this.data: " + this.data); // 20
console.log("3. window.data: " + window.data); // 30
}
}
1) Function.bind(객체 이름) -> 바인딩만
var data = "Global data";
var obj1 = {"data": "obj1 data"};
var obj2 = {"data": "obj2 data"};
function func(){
console.log(this.data); //obj1 data
}
func.bind(obj1)();
2) Function.call(객체 이름) / Function.apply(객체 이름) -> 바인딩 + 실행
var data = "Global data";
var obj1 = {"data": "obj1 data"};
var obj2 = {"data": "obj2 data"};
function func(){
console.log(this.data); //obj1 data
}
func.call(obj1);
func.apply(obj1);
let name = "Spring";
const student = {
name: 'June',
showName: () => console.log(this.name)
};
student.showName(); // Spring