PersonX = function(){};
Miejsca odniesienie do anonimowej funkcji w PersonX
. PersonX
wskazuje na funkcję.
PersonY = new function(){};
Umieszcza odniesienia do nowo skonstruowaną przykład anonimowego funkcji konstruktora do PersonY
. PersonY
wskazuje na obiekt.
Jeśli chodzi o prototyp, to ma on numer PersonY
. Jednakże, ponieważ nie było żadnych właściwości i metod dołączonych do konstruktora before ani instancji after, ma on pusty prototyp *.
Można faktycznie sprawdzić prototyp PersonY
, wykonując console.log(PersonY)
. Zobaczysz, że ma on prototypową właściwość (widzę ją jako __proto__
w Chrome), która jest "pusta". Ale ma dwie ukryte właściwości, constructor
, która jest funkcją konstruktora, która stworzyła obiekt, i inną __proto__
, która prowadzi cię do następnego "ogniwa łańcucha", który byłby obiektem Object
.
* Niezupełnie puste, ponieważ prototyp to łańcuch. Ten poziom prototypu może być pusty, ale następny wyższy prototyp może mieć, lub w tym przypadku, właściwości i metody.
Object prototype -> Constructor prototype -> Your Instance will have:
- toString() - blank - toString()
- hasOwnProperty() - hasOwnProperty()
- and more... - and more...
- ...but nothing from Constructor
Użyj 'function', a nie' nowej funkcji'. –
Po prostu nigdy nie używaj drugiego konstruktora] (http://stackoverflow.com/q/10406552/1048572). – Bergi