Maison  >  Questions et réponses  >  le corps du texte

Comment créer des objets en JavaScript

Les méthodes de création d'objets en Javascript incluent les littéraux d'objet, new+constructor, Object.create(), etc. La méthode Object.create() est-elle le meilleur moyen d'incarner l'idée basée sur un prototype de Javascript ? Comment l'objet créé par new+constructor reflète-t-il l'idée basée sur le prototype ? Laquelle des deux méthodes, méthode littérale objet ou new+constructor, est apparue plus tôt ?

高洛峰高洛峰2686 Il y a quelques jours761

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-06-12 09:31:35

    Désolé, je ne sais pas grand-chose sur la première question, j'en ajouterai plus après l'avoir recherchée.

    Deuxième question :
    Lorsque nous créons un constructeur, il y a un attribut Prototype à l'intérieur. Cet attribut est un pointeur pointant vers l'objet prototype du constructeur
    Il est instancié via l'opérateur new + constructeur L'objet a un __proto__ interne. attribut, qui pointe également vers l'objet prototype

    function Foo(name){
        this.name = name;
    }
    
    Foo.prototype.getName = function(){
        return this.name;
    };
    
    var obj = new Foo("suoz");
    alert(obj.getName());

    Je pense que ce qui peut être reflété est le mécanisme de recherche de variables à travers la chaîne de prototypes

    Lors de la recherche d'une variable, elle sera recherchée dans les attributs de l'instance. Si elle ne peut pas être trouvée, elle sera recherchée dans l'objet prototype (l'objet pointé par le __proto__ de l'objet), jusqu'à Object.prototype (car chaque fonction en JavaScript est un objet), renvoie si elle est trouvée, sinon renvoie undéfini

    La troisième question :
    Le constructeur new+ doit être apparu en premier, car les littéraux d'objet ont été introduits par les développeurs ultérieurs pour simplifier les opérations. De plus, il a été effectivement mis en œuvrevar obj = {};,其实系统内部真实的执行代码是这样的var obj = new Object();

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-12 09:31:35

    Première question :
    Il y a une explication sur Object.create() sur MDN, vous pouvez y jeter un oeil
    https://developer.mozilla.org... (Si vous avez des difficultés en anglais, vous pouvez passer au chinois pour parcourir)
    Deuxième question :
    new est un mot-clé de JS. Le mécanisme sous-jacent de ce langage peut être deviné, mais je n'ose pas dire à quoi il ressemble. Comment reflète-t-il le prototype ? Cette question est un peu bizarre. Je pense que le prototype des objets JS n'est pas reflété par le nouveau, mais est déterminé par le mécanisme de chaîne de prototypes des objets dans ce langage. Le phénomène qui émerge est le mécanisme de recherche ascendant (ce que la personne ci-dessus a dit). Mécanisme de recherche) La troisième question :
    Lorsque vous utilisez des littéraux pour créer des objets,
    créez d'abord un objet vide {};
    Laissez le __proto__ de l'objet vide pointer vers Object.prototype
    Liez ceci à this Au-dessus de l'objet vide ;
    Liez les propriétés et les méthodes de l'objet créé à ceci ;
    Enfin, renvoyez l'objet ;
    Voici essentiellement à quoi il ressemble. S'il y a des erreurs, veuillez les signaler, merci ! (Pour que mes erreurs n'induisent pas les autres en erreur).

    répondre
    0
  • Annulerrépondre