Dalam kedalaman kerumitan JavaScript terdapat binaan misteri yang paling terkenal kerana potensinya untuk membingungkan: "baru" pengendali. Kerjanya yang keruh berdiri di samping rantai prototaip, menyebabkan ramai yang tersesat dalam labirin kod.
Menyelidiki Mekanisme Operator Baharu
Untuk mendedahkan rahsia "baru " pengendali, mari kita membedah operasinya yang rumit:
Kanta Alternatif
Untuk memberi penerangan lanjut tentang "baharu" yang penuh teka-teki pengendali, mari kita terokai pelaksanaan alternatif yang mencerminkan tindakannya:
<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>
Kod ini berfungsi sebagai suar, menerangkan cara pengendali "baharu" tekun melaksanakan tugasnya di belakang tabir.
Atas ialah kandungan terperinci Bagaimanakah Operator JavaScript \'baru\' Mengerjakan Keajaibannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!