Dans les profondeurs de la complexité de JavaScript se cache une construction mystérieuse réputée pour son potentiel à laisser perplexe : le "nouveau" opérateur. Ses rouages obscurs côtoient la chaîne des prototypes, laissant de nombreuses personnes perdues dans le labyrinthe du code.
Plongez dans le mécanisme du nouvel opérateur
Pour dévoiler les secrets du « nouveau " opérateur, disséquons ses opérations complexes :
Une lentille alternative
Pour faire la lumière davantage sur l'énigmatique « nouveau » opérateur, explorons une implémentation alternative qui reflète ses actions :
<code class="javascript">function NEW(f) { var obj, ret, proto; // Prototype verification proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype; // Object inheritance from `proto` obj = Object.create(proto); // Function invocation with object as "this" ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Object return if (Object(ret) === ret) { return ret; } return obj; } // Demonstration: function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; var obj = NEW(Foo, 'bar'); console.log(obj.prop); // 'bar' console.log(obj.inherited); // 'baz' console.log(obj instanceof Foo); // true</code>
Ce code sert de balise, éclairant la façon dont le « nouvel » opérateur exerce avec diligence ses fonctions dans les coulisses.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!