// keracunan objek.prototypeObject.prototype.bar = 1; var foo = {goo: tidak terdefinisi}; foo.bar; // 1'bar 'di foo; // truefoo.hasownproperty ('bar'); // falsefoo.hasownproperty ('goo'); // BENARDi sini, hanya HasownProperty yang dapat memberikan jawaban yang benar, yang sangat diperlukan ketika harus melintasi sifat -sifat suatu objek. Tidak ada cara lain dalam JavaScript untuk mengetahui apakah atribut didefinisikan dalam objek itu sendiri atau diwarisi dari rantai prototipe.
HasownProperty sebagai properti
JavaScript tidak menetapkan HasownProperty sebagai kata sensitif, yang berarti Anda dapat memiliki properti bernama HasownProperty. Pada saat ini, Anda tidak dapat lagi menggunakan metode HasownProperty Anda untuk menilai properti, jadi Anda perlu menggunakan metode HasownProperty eksternal untuk membuat penilaian.
var foo = {hasownProperty: function () {return false; }, bar: 'Here Be Dragons'}; foo.hasownproperty ('bar'); // Selalu mengembalikan False // Gunakan HASOWNPROPERTY OBYEK LAINNYA DAN Sebutkannya dengan 'Ini' Set ke Foo ({}). HasownProperty.call (foo, 'bar'); // true // Dimungkinkan juga untuk menggunakan HasownProperty dari objek // prototipe untuk ini tujuan ini.prototype.hasownproperty.call (foo, 'bar'); // BENARMeringkaskan
Ketika menilai bahwa atribut objek ada, HasownProperty adalah satu -satunya metode yang dapat diandalkan. Di sini kami juga ingin mengingatkan Anda bahwa ketika kami menggunakan untuk melintasi objek, menggunakan HasownProperty akan bagus dalam menghindari masalah yang disebabkan oleh ekstensi objek prototipe.
Berikut ini adalah penambahan dari netizen lain:
HasownProperty () Pada prototipe objek objek dalam JavaScript digunakan untuk menentukan bahwa properti didefinisikan dalam objek itu sendiri daripada diwarisi dari rantai prototipe.
obj.hasownproperty (prop)
Parameter Prop
Nama atau simbol string atribut (ES6) akan terdeteksi
o = objek baru (); o.prop = 'ada'; o.hasownproperty ('prop'); // kembalikan trueo.hasownproperty ('tostring'); // return falshalo.hasownproperty ('hasownproperty'); // Kembalikan salahGunakan HasownProperty sebagai nama properti suatu objek
Karena JavaScript tidak menggunakan HasownProperty sebagai kata yang sensitif, sangat mungkin bahwa kita akan menyebutkan satu properti objek sebagai HasownProperty, sehingga kita tidak dapat lagi menggunakan metode HasownProperty dari prototipe objek untuk menentukan apakah properti berasal dari rantai prototipe.
var foo = {hasownProperty: function () {return false; }, bar: 'Here Be Dragons'}; foo.hasownproperty ('bar'); // selalu kembali salahBagaimana cara menyelesaikan masalah ini dengan tidak menggunakan objek ini. Metode HasownProperty? Kita perlu menggunakan metode HASOWNPROPERTY NYATA pada rantai prototipe:
({}). HasownProperty.call (foo, 'bar'); // true // atau: object.prototype.hasownproperty.call (foo, 'bar'); // BENARReferensi: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/object/hasownproperty