Ich lerne Javascript und ich versuche, die wichtigsten Unterschiede zu verstehen. Ich kann Objekt mit Object.create(someName)
erstellen und ich kann mit Object.create(someName.prototype)
erstellen, aber ich verstehe nicht ganz die wichtigsten Unterschiede. Sollte ich Eigenschaften als normale Eigenschaften setzen? wie someName.a
oder someName.prototype.a
? Es ist nur ein bisschen verwirrend für mich. Ich verstehe, dass bei der Verwendung von Object.Create
ich meine Objektprototypen-Kette mit dem Objekt im specifing definieren, aber ich kann entweder someName
oder someName.prototype
angeben, aber ich kann nicht scheinen, die Unterschiede und Best Practice zu verstehen. Vielen Dank für Ihre Hilfe. :)Object.Create mit Object.create (Name) vs Object.create (name.prototype)
Antwort
Object.create
erstellt ein neues Objekt, dessen Prototyp das erste Argument der gesamten Funktion ist.
In JavaScript die prototype
Eigenschaft ist ein regelmäßiges Objekt mit besonderen Kräften, aber wie ich schon sagte, es ist immer noch ein regelmäßiges Objekt.
Daher hängt die Frage von wann mit x oder x.prototype zu gehen, von Ihren Anforderungen ab.
Zum Beispiel:
var obj = { name: "Matías" };
// This will create a new object whose prototype
// is the object contained in the "obj" variable
var obj2 = Object.create(obj);
In der Tat, ein Objekt keine prototype
Eigenschaft besitzen. Sie verwenden den anderen Ansatz, wenn Sie ein Objekt von einigen Konstruktorfunktion der Prototyp erstellt werden soll:
var A = function() {};
A.prototype.doStuff =() => {
// do stuff here
};
// A common mistake is to provide A instead of A.prototype.
// In JavaScript, even functions are objects, hence if you provide
// A instead of A.prototype, the prototype of the newly created object
// will be the function A and its members, not the ones that would be available
// creating an object like this: new A()
var B = Object.create(A.prototype);
B.doStuff();
var C = Object.create(A);
// Function "doStuff" is undefined!!
C.doStuff();
Vielen Dank, viel klarer jetzt :)! –
- 1. Unterschied zwischen Object.create (Object.prototype), Object.create (Object) und Object.create (null)
- 2. Unterschied zwischen Object.create (null) vs {}?
- 3. JavaScript-Vererbung mit Object.create()?
- 4. JavaScripts Object.create Methode
- 5. Anwendungsfälle von Object.create (null)?
- 6. Verwendung Object.create statt setPrototypeof
- 7. Object.create und init
- 8. JavaScript Prototyp Object.create
- 9. Get keys from Object.create
- 10. JavaScript Object.create - Vererben verschachtelt Eigenschaften
- 11. Erstellen eines Js-Objekts mit Object.create (null)?
- 12. object.create und Verkettung von Objekten
- 13. Javascript: Object.Create (Prototyp) funktioniert nicht
- 14. Verwendung von Setter und Object.create();
- 15. Kurzform für Object.create() mit mehreren Eigenschaften
- 16. ECMAScript2015-Klasse vs Object.create vs neue vs Object.setPrototypeOf
- 17. Javascript-Objekt-Zusammensetzung mit assign & Object.create
- 18. JavaScript Object.create style mit vorhandenem Objekt
- 19. Erstellen eines XMLHttpRequest-Objekts mit Object.create()
- 20. Passing Argumente, wenn Object.create Verwendung als
- 21. Klärung auf Prototype und Object.create Muster
- 22. Javascript - Object.create mehr als ein Prototyp
- 23. Factory-Funktionen vs Object.create - JavaScript - Wann zu verwenden, welche
- 24. Prototypische Vererbung: Können Sie Object.create verketten?
- 25. Unterschied zwischen Proto Link und Object.create
- 26. Seltsames Verhalten und mehrere Instanzen mit Object.create für literale Objekte
- 27. Verständnis Prototyp Objekterstellung mit ‚Object.create()‘ anstelle von ‚neuen‘ Schlüsselwort
- 28. Object.create() kann nicht auf Variable innerhalb der Funktion zugreifen
- 29. Warum bewerten Object.create() und new Object() unterschiedliche Prototypen?
- 30. Warum zeigt console.log() keine geerbten Eigenschaften von Object.create an?
'someName' auf ein Objekt bezieht, und' someName.prototype' bezieht sich auf ein anderes Objekt, so das man Sie verwenden sollten mit 'Object.create()' hängt wirklich davon ab, was Sie erreichen wollen. In ähnlicher Weise hängt die Auswahl zwischen 'someName.a' oder' someName.prototype.a' davon ab, was Sie erreichen möchten - wenn Sie dem Prototyp eine Eigenschaft hinzufügen, haben * * alle * Objekte mit diesem Prototyp Zugriff darauf hilfreich manchmal und nicht hilfreich andere Zeiten. – nnnnnn
Vielen Dank! –