자바에서 this
의 값을 어떻게 설정합니까? 예를 들어
:Javascript -이 값을 설정
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
이도 가능합니까?
자바에서 this
의 값을 어떻게 설정합니까? 예를 들어
:Javascript -이 값을 설정
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
이도 가능합니까?
당신이 묻는 것처럼 자바 스크립트에서 this
의 값을 명시 적으로 할당 할 수 없습니다.
함수가 실행되기 시작하면 해당 함수 안에 this
의 값은 변경되지 않습니다. 그러나 포함 된 함수의 값은 this
이 될 수 있습니다.
this
에 속성을 할당 할 수
:
this.one = 1;
this.two = 2;
대신 this
이 함수의 호출자와 무엇을 결정하는 방법 호출되는 함수입니다 의해 제어됩니다 어떤 this
이 함수 내부로 설정됩니다. 예를 들어
obj.e()
는 obj
될 e()
this
의 내부 값을 설정한다. 또한 this
의 가치를 일으킬 .apply()
및 .call()
을 사용할 수 있습니다
가 포함 된 객체가 아닌 다른 값으로 설정합니다. 당신이이 코드 무엇을 요구 할 수있는 예를 들어
:
var test = {one:1, two:2};
var obj = { a:'b', c:"d", e:function(){
// this will be set to the test object in here when called as below
}};
obj.e.call(test);
이 e()
이 특정 통화의 내부 this
의 값의 원인이됩니다 귀하의 요청 객체로 설정합니다.
var obj = { a:'b', c:"d", e:function(){
// Here, this.one === 1 and this.two === 2
}.bind({ one: 1, two : 2})};
는 '이'기능 체내 설정할 수없는 예약어이다.
함수의 apply
또는 call
메서드를 사용하여 this의 특정 값을 갖는 함수를 호출 할 수 있습니다. obj.e.call({one: 1, two: 2})
. 이 두 가지 기능 방법에 대한 MDN 기사를 찾아보십시오.
또한 ECMAScript 5의 bind
메서드를 사용하면 함수가 호출 될 때마다 this
값을 영구히 설정할 수 있습니다. ECMAScript 5 메서드는 이전 브라우저에서는 작동하지 않지만 이전 브라우저에 지원 기능을 추가 할 수있는 polyfill이 있습니다.
어때?
this.one=1;
this.two=2;
'{one : 1, two : 2} '객체를 함수 안에 넣는다면 왜 이것을'this '에 할당해야합니까? 실제로 성취하려는 것은 무엇입니까? [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)를 참조하십시오. –