javascript - 이것은 객체 리터럴 함수가 아닌가요? 왜 새로운 초기화가 필요합니까?
淡淡烟草味
淡淡烟草味 2017-07-05 10:52:40
0
4
881

이것은 생성자가 아니라는 것을 기억합니다. 왜 this와 new가 생성자와 동일하게 사용됩니까?

淡淡烟草味
淡淡烟草味

모든 응답(4)
学习ing

자바스크립트의 모든 기능은 new 关键字调用,它都可以被称作 构造函数만 사용하세요.

new 키워드를 사용하여 함수를 호출하면 함수 내부에 개체가 암시적으로 선언된 다음 여기에 개체가 할당되고, new 키워드를 사용하여 저자의 책 메서드를 호출하면 마지막으로 this가 암시적으로 반환됩니다. , 이는 다음 프로세스와 동일합니다.

으아악

여기 있는 o는 실제로 우리가 흔히 보는 이 물체입니다.

小葫芦

JavaScript에는 클래스나 생성자가 없습니다.

으아악

new를 사용하여 개체 만들기

으아악

js에는 생성자가 없지만 MDN 문서에서도 이 단어가 사용됩니다: https://developer.mozilla.org...

코드 new foo(...)가 실행될 때:

  • 새 개체가 생성됩니다. foo.prototype.

  • 에서 상속됩니다.
  • 생성자 foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo()는 매개변수가 전달되지 않은 경우에만 사용할 수 있습니다.

  • 생성자가 "객체"를 반환하면 이 객체가 전체 new出来的结果。如果构造函数没有返回对象,那么new결과를 대체합니다. 생성자가 개체를 반환하지 않으면 결과는 1단계에서 생성된 개체가 됩니다. ps: 일반적으로 생성자는 어떤 값도 반환하지 않지만 사용자가 이 반환 값을 재정의하려는 경우 다음을 선택할 수 있습니다. 덮어쓰려면 일반 객체를 반환하세요. 물론, 배열도 객체이기 때문에 배열을 반환하면 덮어쓰게 됩니다.

ES6에 클래스가 추가되더라도 그것은 단지 구문상의 설탕일 뿐입니다:

으아악
女神的闺蜜爱上我

생성자의 개념을 잘못 이해하셨네요.

사실 js에는 '생성자'라는 용어가 있어서는 안 되고, 함수를 구성하는 방법으로 이해해야 합니다. 이는 어떤 함수라도 사용될 수 있고, 어떤 함수라도 '생성자'라고 부를 수 있다는 뜻입니다. 소위 "생성자"를 작성했을 때 일반 함수와 차이점을 발견하셨나요? 아니, 그냥 일반 함수일 뿐입니다. new

위에서는 es6 화살표 기능을 제외합니다.

習慣沉默

js의 모든 함수는 생성자와 동일합니다(실제 ES6 화살표 함수 제외).
안녕하세요, 놀라운 js님!

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿