다음 객체 정의를 참조하십시오.
'strict'var jane = {name :'jane ', display : function () {retrun'사람이라는 이름의 사람 ' + this.name; }};이것은 정상적으로 호출됩니다
jane.display ();
다음 호출은 오류가 발생합니다.
var func = jane.display; func ()
TypeError : 정의되지 않은 속성 '이름'을 읽을 수 없습니다
이 포인터가 변경되었으므로 올바른 방법은 다음과 같습니다.
var func2 = jane.display.bind (jane); func2 ()
'펜슨이 이름이었다'
모든 기능에는 아래의 Foreach와 같은 특별한이 변수가 있습니다.
var jane = {이름 : 'Jane', 친구 : [ 'Tarzan', 'Cheeta'], sayhitofriends : function () { 'Strict 사용'; this.friends.foreach (function (friend) {// 'this'는 여기에서 정의되지 않습니다. }}SaysHitOfriends에 전화하면 오류가 발생합니다.
jane.sayhitofriends ()
TypeError : 정의되지 않은 속성 '이름'을 읽을 수 없습니다
해결책 1 : 이것을 다른 변수로 저장하십시오
var jane = {이름 : 'Jane', 친구 : [ 'Tarzan', 'Cheeta'], sayhitofriends : function () { 'Strict 사용'; var that = this; this.friends.foreach (function (friend) {console.log (that.name + '는' + friend에게 hi);}); }}솔루션 2 : Foreach의 두 번째 매개 변수를 사용하여 값을 지정할 수 있습니다.
var jane = {이름 : 'Jane', 친구 : [ 'Tarzan', 'Cheeta'], sayhitofriends : function () { 'Strict 사용'; this.friends.foreach (function (friend) {console.log (this.name + '는' + friend에게 hi);}, this); }}