Dalam ES6, proksi digunakan untuk memintas operasi tertentu pada objek, dan boleh menapis dan menulis semula akses luar Proksi menyediakan lapisan "pemintasan" di hadapan objek sasaran untuk menghalang akses luaran kepada objek . Semua mesti melepasi lapisan pemintasan ini, dan sintaksnya ialah "Proksi baharu(sasaran, pengendali);".
Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.
Proksi boleh difahami sebagai menyediakan lapisan "pemintasan" sebelum objek sasaran mesti melalui lapisan ini terlebih dahulu daripada pemintasan. Oleh itu, satu mekanisme disediakan untuk menapis dan menulis semula akses luaran. Makna asal perkataan Proksi ialah agensi Ia digunakan di sini untuk bermaksud bahawa ia "bertindak bagi pihak" operasi tertentu. Berikut ialah definisi proksi daripada dokumentasi rasmi.
let p = new Proxy(target, handler);
sasaran: Objek sasaran yang perlu dibalut oleh Proksi (boleh jadi sebarang jenis objek, termasuk tatasusunan asli, fungsi atau proksi lain).
pengendali: Objek yang sifatnya ialah fungsi yang mentakrifkan gelagat ejen apabila operasi dilakukan (boleh difahami sebagai sejenis pencetus).
ES6 mencadangkan ciri baharu, proksi, yang digunakan untuk memintas operasi tertentu pada objek. Fungsi ini sangat berguna. Untuk memberi contoh:
var engineer = { name: 'Joe Sixpack', salary: 50 }; var interceptor = { set: function (receiver, property, value) { console.log(property, 'is changed to', value); receiver[property] = value; } }; engineer = Proxy(engineer, interceptor);
Objek jurutera digantikan dengan objek proksi yang dibina oleh Proksi proksi Parameter kedua yang dihantar ke Proksi ialah fungsi pemproses , seperti dapatkan, set dan kaedah lain. Kaedah yang ditetapkan di sini boleh memintas semua operasi penetapan harta yang dilakukan pada objek proksi.
Apabila kami melaksanakan tugasan berikut:
engineer.salary = 60;
akan mencetuskan pemproses dan maklumat output:
salary is changed to 60
Apabila objek proksi ditetapkan, fungsi pemproses akan Dipanggil supaya ia boleh digunakan untuk menyahpepijat masalah tertentu.
Sudah tentu, Proksi tidak dilahirkan hanya untuk penyahpepijatan Jika anda telah menggunakan Sencha Touch atau AngularJS, anda akan mendapati bahawa rangka kerja ini mempunyai fungsi yang serupa dengan pengikatan model data.
Pengarang telah menggunakan proksi dalam Sencha Touch Kodnya adalah seperti berikut:
proxy:{//数据代理 // type:'localstorage', // id:'bills', // limitParam:'limit', // pageParam:'page', //将用户代理改为sql,通过websql来解决localstorage的5MB存储上限的问题 type:'sql', database:'myDB', table:'bill', }, //filters:[{property:"kind",value:"无"}],//过滤属性 listeners:{ removerecords:function(){ console.log("数据被删除"); }, addrecords:function(){ console.log("数据被追加"); }, updaterecord:function(){ console.log("数据被修改"); }, }
Seperti yang anda lihat, ia menggunakan kaedah pemantauan setter dan getter, manakala Angular menggunakan The. satu adalah pengesanan kotor. . Apabila kami mempunyai Proksi, kaedah pengesanan khusus ini boleh dipermudahkan untuk pengikatan model data ringkas.
[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]
Atas ialah kandungan terperinci Apakah penggunaan proksi dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!