>웹 프론트엔드 >JS 튜토리얼 >js 포인팅 문제

js 포인팅 문제

小云云
小云云원래의
2017-12-08 15:00:491518검색
  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.