Javascript에서 객체를 생성하는 메소드에는 객체 리터럴, new+constructor, Object.create() 등이 있습니다. Javascript의 프로토타입 기반 아이디어를 구현하는 가장 좋은 방법은 Object.create() 메소드인가요? new+constructor로 생성된 객체는 프로토타입 기반 아이디어를 어떻게 반영하나요? 객체 리터럴 방식과 new+constructor 중 어떤 방식이 먼저 등장했나요?
두 번째 질문: 생성자를 만들 때 그 안에 Prototype 속성이 있습니다. 이 속성은 생성자의 프로토타입 개체를 가리키는 포인터입니다. 새 연산자 + 생성자를 통해 인스턴스화됩니다. 개체에는 내부 __proto__가 있습니다. 프로토타입 객체를 가리키는 속성이기도 합니다
으아악
이것이 프로토타입 체인
을 통해 변수를 검색하는 메커니즘에 반영되어야 한다고 생각합니다.
변수를 검색할 때 인스턴스 속성에서 검색됩니다. 변수를 찾을 수 없으면 프로토타입 객체(객체의 __proto__가 가리키는 객체)에서 Object.prototype까지 검색됩니다. JavaScript의 모든 함수는 객체입니다), 발견되면 반환하고, 그렇지 않으면 정의되지 않음
을 반환합니다.
세 번째 질문: new+ 생성자가 먼저 등장했을 것입니다. 객체 리터럴은 이후 개발자가 작업을 단순화하기 위해 도입했기 때문입니다. 게다가 실제로 구현이 되었어요var obj = {};,其实系统内部真实的执行代码是这样的var obj = new Object();
첫 번째 질문: MDN에 Object.create()에 대한 설명이 있으니 살펴보시면 됩니다. https://developer.mozilla.org... (영어가 어려우면 중국어로 바꿔도 됩니다. 찾아보기) 두 번째 질문: new는 JS 키워드입니다. 이 언어의 기본 메커니즘을 추측할 수 있지만 프로토타입이 어떻게 보이는지는 감히 말할 수 없습니다. 이 질문은 좀 이상합니다. JS 객체의 프로토타입은 new에 의해 반영되지 않고 이 언어에서 객체의 프로토타입 체인 메커니즘에 의해 결정되는 것 같습니다. 그러면 나타나는 현상은 상향 검색 메커니즘입니다. 위의 검색 메커니즘) 세 번째 질문: 객체를 생성하기 위해 리터럴을 사용하는 경우 먼저 빈 객체 {}를 생성합니다. 빈 객체의 __proto__가 Object.prototype을 가리키도록 합니다. 빈 객체 위에 이것을 바인딩합니다. 생성된 개체의 속성과 메서드를 여기에 바인딩합니다. 마지막으로 이 개체를 반환합니다. 기본적으로 오류가 있으면 지적해 주세요. (내 실수가 다른 사람을 오해하지 않도록).
죄송합니다. 첫 번째 질문에 대해서는 잘 모르겠습니다. 조사한 후 추가하겠습니다.
두 번째 질문:
으아악생성자를 만들 때 그 안에 Prototype 속성이 있습니다. 이 속성은 생성자의 프로토타입 개체를 가리키는 포인터입니다.
새 연산자 + 생성자를 통해 인스턴스화됩니다. 개체에는 내부 __proto__가 있습니다. 프로토타입 객체를 가리키는 속성이기도 합니다
이것이 프로토타입 체인
을 통해 변수를 검색하는 메커니즘에 반영되어야 한다고 생각합니다.변수를 검색할 때 인스턴스 속성에서 검색됩니다. 변수를 찾을 수 없으면 프로토타입 객체(객체의 __proto__가 가리키는 객체)에서 Object.prototype까지 검색됩니다. JavaScript의 모든 함수는 객체입니다), 발견되면 반환하고, 그렇지 않으면 정의되지 않음
을 반환합니다.세 번째 질문:
new+ 생성자가 먼저 등장했을 것입니다. 객체 리터럴은 이후 개발자가 작업을 단순화하기 위해 도입했기 때문입니다. 게다가 실제로 구현이 되었어요
var obj = {};
,其实系统内部真实的执行代码是这样的var obj = new Object();
첫 번째 질문:
MDN에 Object.create()에 대한 설명이 있으니 살펴보시면 됩니다.
https://developer.mozilla.org... (영어가 어려우면 중국어로 바꿔도 됩니다. 찾아보기)
두 번째 질문:
new는 JS 키워드입니다. 이 언어의 기본 메커니즘을 추측할 수 있지만 프로토타입이 어떻게 보이는지는 감히 말할 수 없습니다. 이 질문은 좀 이상합니다. JS 객체의 프로토타입은 new에 의해 반영되지 않고 이 언어에서 객체의 프로토타입 체인 메커니즘에 의해 결정되는 것 같습니다. 그러면 나타나는 현상은 상향 검색 메커니즘입니다. 위의 검색 메커니즘)
세 번째 질문:
객체를 생성하기 위해 리터럴을 사용하는 경우
먼저 빈 객체 {}를 생성합니다.
빈 객체의 __proto__가 Object.prototype을 가리키도록 합니다.
빈 객체 위에 이것을 바인딩합니다.
생성된 개체의 속성과 메서드를 여기에 바인딩합니다.
마지막으로 이 개체를 반환합니다.
기본적으로 오류가 있으면 지적해 주세요. (내 실수가 다른 사람을 오해하지 않도록).