🤔 함수를 객체의 속성으로 할당할 때 방식에 따라 무슨 차이가 있을까?
🎁 문제의 Obj
obj = {
test(param){
console.log(param);
console.log(this);
return;
},
test2:function(param){
console.log(param)
console.log(this);
return;
},
test3:(param)=>{
console.log(param);
console.log(this);
return;
}
}
console.log(obj);
console.log(obj.test(1));
console.log(obj.test2(1));
console.log(obj.test3(1));
🐱🏍 TEST
🔍 TEST 1. 속성비교하기
test: ƒ test(param)
arguments: (...)
caller: (...)
length: 1
name: "test"
__proto__: ƒ ()
[[FunctionLocation]]: VM365:2
[[Scopes]]: Scopes[2]
test2: ƒ (param)
arguments: null
caller: null
length: 1
name: "test2"
prototype: {constructor: ƒ}
__proto__: ƒ ()
[[FunctionLocation]]: VM365:7
[[Scopes]]: Scopes[2]
test3: (param)=> {…}
arguments: (...)
caller: (...)
length: 1
name: "test3"
__proto__: ƒ ()
[[FunctionLocation]]: VM365:12
[[Scopes]]: Scopes[2]
__proto__: Object
🔍 TEST 2. Function.prototype
obj = {
test(){},
test2:function(){}
}
Function.prototype.test = function(e){console.log(e)}
obj.test.test => f
obj.test.test2 => f