우리는 한 문장을 기억해야 합니다. 이것은 항상 함수가 실행되는 객체를 가리킵니다! 함수가 생성된 개체가 아니라 기억하세요...
이 기사에서는 세 가지 상황에서 이 개체가 어디에 있는지 분석합니다.
일반 함수에 있는 이
이것이 어디에 있든 함수가 실행될 때 위치를 찾는 것이 최우선입니다.
1 var name="global";
2 함수 getName(){
3 var name="local";
4 return this.name;
5 };
6 Alert(getName());
글로벌 환경의 getName 함수에 나타날 때 getName 함수의 런타임 위치는
그렇다면 이것이 지구환경의 기능으로 나타나지 않고 지역환경의 기능으로 나타난다면 어디로 떨어질 것인가?
2 var twobin={
3 이름:"local",
4 getName:function(){
5 return this.name;
6 }
7 };
8 Alert( twobin.getName());
이것이 클로저입니다
클로저도 문제가 됩니다. 이 글에서는 당분간 이에 대해 자세히 다루지 않겠습니다. 즉, 소위 클로저라는 것은 함수 내부에 또 다른 함수를 만드는 것입니다. 외부 변수에 액세스합니다.
탕자 이것이 악당 폐쇄와 뒤섞여 있으면 결코 평화가 없을 것이 분명합니다!
2 var twobin={
3 이름:"local",
4 getName:function(){
5 return function(){
6 return this.name;
7 } ;
8 }
9 };
10 Alert(twobin.getName()());
어디든, 기능이 실행될 때 위치를 꼭 찾아보세요. 이때 getName 함수의 런타임 위치를 기준으로 판단할 수 없고 익명 함수의 런타임 위치를 기준으로 판단합니다.
return this .name;
};
그럼 클로저에서 이걸 어떻게 투빈으로 만들 수 있을까요?
var name="global";
var twobin={
name:"local",
getName:function(){
var that=this;
return 함수(){
=이때 getName 함수의 런타임 위치는
alert(twobin.getName()); 🎜> 그러면 이것은 twobin을 가리킵니다. 객체이므로 이는 또한 twobin 객체를 가리킵니다. 클로저의 익명함수에서 that.name이 반환된다면 이때 반환된 that.name은 실제로 twobin.name이므로 "local"에 경고할 수 있습니다!
이것은 호출 및 적용
자바스크립트에서 이를 제어할 수 있는 유일한 것은 호출 및 적용입니다.
부름과 신청은 이 부모님과 같습니다. 이것을 살려주는 곳에서 살 것이며 순종해야 합니다!
코드 복사
코드는 다음과 같습니다.
getName .call(twobin);
이것은 getName 함수에 있습니다. 이것이 어디에 있든 간에, 기능이 실행될 때 위치를 찾아야 합니다. 이때 getName 함수가 실행될 때의 위치는
getName(twobin);
분명히 getName 함수가 위치한 객체는 window이므로 이것의 home은 window에 있어야 하며, 즉, 창 개체를 가리키면 getName이 이를 반환합니다. 이름은 실제로 window.name이므로 경고는 "전역"으로 표시됩니다.
그럼 그들의 명령을 들어야 하기 때문에 전화해서 신청할 시간입니다!
getName.call(twobin);
그 중 call은 이것의 홈이 twobin 객체임을 지정합니다. 왜냐하면 이것은 강제로 twobin에만 정착되어야 하기 때문입니다. 그러면 this는 이때 twobin 객체를 가리키고, this.name 실제로는 twobin.name이므로 경고가 "부분"으로 나옵니다!
약간 요약

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
