Object
Eve Function
는 (는) Adam이며 Adam ( Function
)은 자신의 뼈 ( Function.prototype
)를 사용하여 Eve ( Object
) 를 만듭니다 . 그러면 누가 아담 ( Function
) 을 만들었 습니까? -JavaScript 언어의 발명자 :-).
utsaina의 답변에 따르면 더 유용한 정보를 추가하고 싶습니다.
나에게 가장 놀라운 것은 대신 을 Object.__proto__
가리키는 것을 발견하고 있었지만 그만한 이유가 있다고 확신합니다. :-)Function.prototype
Object.prototype
해서는 안됩니다. Object.__proto__
를 가리켜서는 안됩니다 Object.prototype
. 대신, 인스턴스 Object
o
, o.__proto__
가리켜 야합니다 Object.prototype
.
(용어 사용에 대한 용서 class
와 instance
자바 스크립트,하지만 당신은 그것을 알고 :-)
나는 클래스 생각 Object
자체의 인스턴스 인 Function
이유, Object.__proto__ === Function.prototype
. 그러므로 : Object
이브이고 Function
아담이며, Adam ( Function
)은 자신의 뼈 ( Function.prototype
)를 사용하여 Eve ( Object
) 를 만듭니다 .
또한, 심지어는 클래스 Function
자체의 인스턴스 Function
입니다 자체가, Function.__proto__ === Function.prototype
그 또한 이유,Function === Function.constructor
또한 또한, 일반 클래스 Cat
의 인스턴스입니다 Function
즉, Cat.__proto__ === Function.prototype
.
위의 이유는 JavaScript로 클래스를 만들 때 실제로 함수를 만드는 것입니다.이 함수는의 인스턴스 여야합니다 Function
. Object
그리고 Function
단지 특별하다, 그러나 동시에 그들은 여전히 클래스입니다 Cat
일반 클래스입니다.
Chrome Chrome 엔진에서 다음과 같은 요소는 다음과 같습니다.
Function.prototype
Function.__proto__
Object.__proto__
Cat.__proto__
그것들은 모두 ===
다른 3과 (절대적으로 동일)이며, 그들의 가치는function Empty() {}
> Function.prototype
function Empty() {}
> Function.__proto__
function Empty() {}
> Object.__proto__
function Empty() {}
> Cat.__proto__
function Empty() {}
> Function.prototype === Function.__proto__
true
> Function.__proto__ === Object.__proto__
true
> Object.__proto__ === Cat.__proto__
true
확인. 그러면 누가 특별 function Empty() {}
( Function.prototype
) 을 생성 합니까? 생각 해봐 :-)