Rumah > Artikel > hujung hadapan web > Apakah penggunaan has() dalam es6?
Dalam es6, kaedah has() digunakan untuk memintas operasi HasProperty dan juga boleh digunakan untuk menyembunyikan sifat tertentu kaedah ini berfungsi sebagai pengendali dalam fungsi dan mengembalikan nilai Boolean yang menunjukkan sama ada terdapat a milik sendiri atau Atribut yang diwarisi, sintaksnya ialah "Reflect.has (objek sasaran untuk mencari atribut, atribut untuk diperiksa)".
Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.
has digunakan sebagai pengendali dalam fungsi Ia mengembalikan nilai Boolean yang menunjukkan sama ada terdapat atribut milik sendiri atau diwarisi .
Sintaks fungsi has() diberikan di bawah, dengan
sasaran ialah objek sasaran di mana atribut itu ditemui.
propertyKey ialah nama hartanah untuk diperiksa.
Reflect.has(target, propertyKey)
Kaedah has() digunakan untuk memintas operasi HasProperty, iaitu, apabila menentukan sama ada objek mempunyai sifat tertentu, kaedah ini akan berkuat kuasa. Operasi biasa ialah operator dalam.
Kaedah has() boleh menerima dua parameter, iaitu objek sasaran dan nama atribut untuk ditanya.
Gunakan kaedah has() untuk menyembunyikan atribut tertentu daripada ditemui oleh operator in.
var handler = { has(target, key) { if (key[0] === "_") { return false; } return key in target; }, }; var target = { _prop: "foo", prop: "foo" }; var proxy = new Proxy(target, handler); "_prop" in proxy; // false
Jika aksara pertama nama sifat objek asal ialah garis bawah, proxy.has() akan mengembalikan palsu dan tidak akan ditemui oleh operator dalam.
Jika objek asal tidak boleh dikonfigurasikan atau pengembangan dilarang, has() pemintasan akan melaporkan ralat.
var obj = { a: 10 }; Object.presentExtensions(obj); var p = new Proxy(obj, { has: function(target, prop) { return false; }, }); "a" in p; // TypeError is thrown
Dalam kod di atas, objek obj dilarang dikembangkan dan akibatnya, ralat akan dilaporkan jika has digunakan untuk memintasnya. Iaitu, jika sesuatu sifat tidak boleh dikonfigurasikan (atau objek sasaran tidak boleh dilanjutkan), kaedah has() tidak boleh "menyembunyikan" (iaitu mengembalikan palsu) sifat objek sasaran.
Perlu diambil perhatian bahawa kaedah has() memintas operasi HasProperty, bukan operasi HasOwnProperty, iaitu, kaedah has() tidak menentukan sama ada sesuatu harta ialah harta objek sendiri atau harta warisan.
Selain itu, walaupun gelung for...in juga menggunakan operator in, pintasan has() tidak berkuat kuasa pada gelung for...in.
let stu1 = { name: "lily", score: 59 }; let stu2 = { name: "lucy", score: 99 }; let handler = { has(target, prop) { if (prop === "score" && target[prop] < 60) { console.log(`${target.name} 不及格`); return false; } return prop in target; }, }; let oproxy1 = new Proxy(stu1, handler); let oproxy2 = new Proxy(stu2, handler); "score" in oproxy1; // lily 不及格 // false "score" in oproxy2; // true for (let a in oproxy1) { console.log(oproxy1[a]); } // lily // 59 for (let b in oproxy2) { console.log(oproxy2[b]); } // lucy // 99
Dalam kod di atas, has() pemintasan hanya berkuat kuasa untuk operator dalam dan bukan untuk gelung untuk…dalam, menyebabkan atribut yang tidak memenuhi keperluan tidak dikecualikan oleh untuk… dalam gelung.
[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]
Atas ialah kandungan terperinci Apakah penggunaan has() dalam es6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!