js 포인팅 문제

小云云
풀어 주다: 2017-12-08 15:00:49
원래의
1499명이 탐색했습니다.
  1. 이 점은 다음과 같습니다.
    json과 프로토타입 체인이 동일합니다.
    많은 기사를 읽어봤는데 다들 꽤 복잡하다고 하더라고요.
    이것은 호출 개체를 가리킵니다.
    코드를 직접 게시하세요.


var x = {
         test:function(){
                          console.log(this);
                        };
              };
x.test()//x{...};
var n = x.test();
n();//Window
로그인 후 복사
로그인 후 복사

첫 번째는 x call이므로 console.log는 x이고, 두 번째는 window.n()과 동일하므로 window call이므로 window가 표시됩니다.
아마도 'this'를 포함하는 함수의 '.' 앞에 있는 객체인 것 같습니다. 신청 및 전화에 관해서는 몇 가지 변경 사항이 있을 예정이오니, 아래에서 간략히 말씀드리겠습니다.
apply와 call의 차이점은 Apply는 (객체, [매개변수 집합])이고 call은 (객체, 매개변수, 매개변수, 매개변수, 매개변수, 매개변수...)라는 점입니다. 먼저 코드를 게시하세요.

    function ed(){
    this.age = ed;
    }; 
    function ing(){
    this.age = 2;
    this.sex = 0;
    this.showAge = function(){
        console.log(this.age);
        console.log(this.sex);
        }
    };
    var edObj = new ed();
    var ingObj = new ing();
    ingObj.showAge.apply(edObj);//2,Undefined
로그인 후 복사
로그인 후 복사

솔직하게 말하면 프로그래머가 개발을 위해 컴퓨터를 바꾸는 것과 같습니다. 자신의 생각으로 데이터를 처리하는 논리 외에는 다른 환경 변수를 다른 사람이 사용해야 합니다. Apply 앞의 메소드는 프로그래머의 생각이고, () 안의 메소드는 새 컴퓨터입니다. 다음 매개변수는 메소드에 필요한 매개변수입니다. 이를 직접 전달할 수 있습니다.

2. 화살표 함수 포인팅: 화살표 함수에는 이름이 없고 이름으로 호출할 수 없으므로 영구적으로 Window를 가리킵니다.

3. 변수 포인팅: 메모리 포인터 문제와 관련된 것 같습니다. 하지만 이해하기 쉽습니다. 즉, 상수는 메모리를 차지하고 변수는 합산됩니다. 2명 이상의 아이들이 게임을 하는 것과 같습니다. 장소를 바꾸거나 다른 사람과 놀지 않는 한, 당신의 것은 내 것이고, 내 것은 당신 것입니다. 이 기억은 아이들의 놀이터와도 같으며 아이들이 소유한 장난감은 아이들의 속성이다(이 아이들은 상대적으로 관대하다).
세 가지 예를 들어보겠습니다.

var xArr = [];
var xJson = {};
(()=>{
      let yArr = xArr,
         yJson = xJson;
       yArr.push(1);
       yJson.age = 1;
      })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。
console.log(xArr);//[1]; 
console.log(xJson);//{age: 1}
로그인 후 복사
로그인 후 복사

Y는 함께 놀 다른 사람을 찾지 못했기 때문에(함께 놀 다른 사람을 찾는 방법은 예 3 참조), y의 장난감은 x의 장난감입니다.

var x = 0,
    a = 2.
    b = 3,
    y = x;
    console.log(y);//0
    y = a+b;
    console.log(x);//0
    console.log(y);//5
로그인 후 복사
로그인 후 복사

Y가 놀 장소를 바꾸었기 때문에(지적할 기억을 열었기 때문에) X는 Y의 장난감을 얻을 수 없습니다.

var x = {},
    a = {},
    y = x,
    z = y,
    y = a;
    y.age = 1;
    console.log(x);//{}
    console.log(y);//{age:1}
    console.log(z);//{}
    console.log(a);//{age:1}
    z.age = 2;
    console.log(x);//{age:2}
로그인 후 복사
로그인 후 복사

이제부터 낯선 사람들을 만나는 이야기일지도 모르겠네요...


1.이 점은 다음과 같습니다.
json과 프로토타입 체인이 동일합니다.
많은 기사를 읽어봤는데 다들 꽤 복잡하다고 하더라고요.
이것은 호출 개체를 가리킵니다.
코드를 직접 게시하세요.

var x = {
         test:function(){
                          console.log(this);
                        };
              };
x.test()//x{...};
var n = x.test();
n();//Window
로그인 후 복사
로그인 후 복사

첫 번째는 x 호출이므로 console.log는 x입니다. 두 번째는 window.n()과 동일하므로 window 호출이 표시됩니다.
아마도 'this'를 포함하는 함수의 '.' 앞에 있는 객체인 것 같습니다. 신청 및 전화에 관해서는 몇 가지 변경 사항이 있을 예정이오니, 아래에서 간략히 말씀드리겠습니다.
apply와 call의 차이점은 Apply는 (객체, [매개변수 집합])이고 call은 (객체, 매개변수, 매개변수, 매개변수, 매개변수, 매개변수...)라는 점입니다. 먼저 코드를 게시하세요.

    function ed(){
    this.age = ed;
    }; 
    function ing(){
    this.age = 2;
    this.sex = 0;
    this.showAge = function(){
        console.log(this.age);
        console.log(this.sex);
        }
    };
    var edObj = new ed();
    var ingObj = new ing();
    ingObj.showAge.apply(edObj);//2,Undefined
로그인 후 복사
로그인 후 복사

솔직하게 말하면 프로그래머가 개발을 위해 컴퓨터를 바꾸는 것과 같습니다. 자신의 생각으로 데이터를 처리하는 논리 외에는 다른 환경 변수를 다른 사람이 사용해야 합니다. Apply 앞의 메소드는 프로그래머의 생각이고, () 안의 메소드는 새 컴퓨터입니다. 다음 매개변수는 메소드에 필요한 매개변수입니다. 이를 직접 전달할 수 있습니다.

2. 화살표 함수 포인팅: 화살표 함수에는 이름이 없고 이름으로 호출할 수 없으므로 영구적으로 Window를 가리킵니다.

3. 변수 포인팅: 메모리 포인터 문제와 관련된 것 같습니다. 하지만 이해하기 쉽습니다. 즉, 상수는 메모리를 차지하고 변수는 추가됩니다. 2명 이상의 아이들이 게임을 하는 것과 같습니다. 장소를 바꾸거나 다른 사람과 놀지 않는 한, 당신의 것은 내 것이고, 내 것은 당신 것입니다. 이 기억은 아이들의 놀이터와도 같으며, 아이들이 소유한 장난감은 아이들의 속성이다(이 아이들은 상대적으로 관대하다).
세 가지 예를 들어보겠습니다.

var xArr = [];
var xJson = {};
(()=>{
      let yArr = xArr,
         yJson = xJson;
       yArr.push(1);
       yJson.age = 1;
      })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。
console.log(xArr);//[1]; 
console.log(xJson);//{age: 1}
로그인 후 복사
로그인 후 복사

Y는 함께 놀 다른 사람을 찾지 못했기 때문에(함께 놀 다른 사람을 찾는 방법은 예 3 참조), y의 장난감은 x의 장난감입니다.

var x = 0,
    a = 2.
    b = 3,
    y = x;
    console.log(y);//0
    y = a+b;
    console.log(x);//0
    console.log(y);//5
로그인 후 복사
로그인 후 복사

Y가 놀 장소를 바꾸었기 때문에(지적할 기억을 열었기 때문에) X는 Y의 장난감을 얻을 수 없습니다.

var x = {},
    a = {},
    y = x,
    z = y,
    y = a;
    y.age = 1;
    console.log(x);//{}
    console.log(y);//{age:1}
    console.log(z);//{}
    console.log(a);//{age:1}
    z.age = 2;
    console.log(x);//{age:2}
로그인 후 복사
로그인 후 복사

관련 권장사항:

JavaScript에서 이에 대한 종합 분석

How to use this in js

JavaScript에서 이 규칙에 대한 간략한 소개

위 내용은 js 포인팅 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿