Apakah penggunaan has() dalam es6?

WBOY
Lepaskan: 2022-04-26 11:06:08
asal
3659 orang telah melayarinya

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)".

Apakah penggunaan has() dalam es6?

Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.

Apakah penggunaan has() dalam es6?

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)
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
es6
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!