คุณสมบัติทั้งสองจัดทำโดย Object.prototype: Object.prototype.hasownproperty () และ Object.prototype.ispropertyof ()
ก่อนอื่นอธิบายวิธีการและการใช้งาน HasownProperty () อธิบายวิธีการและการใช้งาน isPropertyof ()
เข้าใจสิ่งเหล่านี้อย่างน้อยคุณต้องเข้าใจห่วงโซ่ต้นแบบ
1. Object.prototype.hasownproperty ()
ภาพรวม
วิธีการ hasownproperty () ใช้เพื่อตรวจสอบว่าวัตถุมีคุณสมบัติที่ระบุหรือไม่
ไวยากรณ์
obj.hasownproperty ("ชื่อทรัพย์สิน"); // ว่าอินสแตนซ์ obj มีคุณสมบัติในวงเล็บหรือไม่ถ้าเป็นจริงมิฉะนั้นจะเป็นเท็จ
อธิบาย
วัตถุทั้งหมดที่สืบทอด Object.prototype จะได้รับการสืบทอดจากห่วงโซ่ต้นแบบไปยังวิธี HasownProperty วิธีนี้ตรวจพบว่าวัตถุมีคุณสมบัติเฉพาะหรือไม่ ซึ่งแตกต่างจากในวิธีนี้จะไม่สนใจคุณสมบัติที่สืบทอดมาจากห่วงโซ่ต้นแบบ
ตัวอย่าง
1. ใช้วิธีการ hasownproperty () เพื่อตรวจสอบว่าวัตถุมีคุณสมบัติเฉพาะหรือไม่
ตัวอย่างต่อไปนี้ตรวจพบว่า Object O มีแอตทริบิวต์ของตัวเองหรือไม่:
var o = วัตถุใหม่ (); o.prop = "มีอยู่"; ฟังก์ชั่นการเปลี่ยนแปลง () {o.newprop = o.prop; ลบ o.prop;} o.hasownproperty ("prop") // truechange () การใช้งานของ O.hasownproperty ( ไม่มีอยู่จริง2. ความแตกต่างระหว่างคุณลักษณะของคุณเองและคุณลักษณะที่สืบทอดมา
คอลัมน์ต่อไปนี้แสดงให้เห็นถึงความแตกต่างระหว่างวิธี HASOWNPROPERTY () ปฏิบัติต่อคุณสมบัติของตัวเองและคุณสมบัติที่สืบทอดมา
var o = วัตถุใหม่ (); o.prop = "มีอยู่"; o.hasownproperty ("prop"); // จริงคุณลักษณะของตัวเอง o.hasownproperty ("toString"); // วิธีการที่สืบทอดมาจากวัตถุต้นแบบ o.hasownproperty ("3. หลังจากแก้ไขห่วงโซ่ต้นแบบตัวอย่างชี้ของ HASOWNPROPERTY () คือ
คอลัมน์ต่อไปนี้แสดงให้เห็นถึงความแตกต่างระหว่างวิธี HASOWNPROPERTY () ในคุณสมบัติการสืบทอดหลังจากปรับเปลี่ยนห่วงโซ่ต้นแบบ
var o = {ชื่อ: 'jim'}; function person () {this.age = 19;} person.prototype = o; // แก้ไขต้นแบบของบุคคลเพื่อชี้ไปที่ p.hasownproperty ("ชื่อ"); // เท็จไม่สามารถตัดสินแอตทริบิวต์ชื่อที่สืบทอดได้4. ใช้ hasownproperty () เพื่อสำรวจคุณสมบัติของวัตถุเอง
คอลัมน์ต่อไปนี้แสดงให้เห็นถึงวิธีการเพิกเฉยต่อแอตทริบิวต์ที่สืบทอดมาในขณะที่สำรวจวัตถุและรับคุณลักษณะของตัวเอง
หมายเหตุ ・ forin จะสำรวจคุณสมบัติที่ระบุได้ในการสืบทอดวัตถุ
var o = {เพศ: 'ma'} person () {this.name = "จาง san"; this.age = 19;} person.prototype = o; var p = บุคคลใหม่ (); สำหรับ (var k ใน p) {ถ้า (p.hasownproperty (k)) {console.log ( คุณสมบัติที่อื่น: "+k); // เพศ}}5. วิธีการ HasownProperty อาจถูกเขียนทับ
หากวัตถุมีวิธี HASOWNPROPERTY () ของตัวเองวิธี HASOWNPROPERTY () ในห่วงโซ่ต้นแบบจะถูกเขียนทับ
var o = {เพศ: 'ชาย', hasownproperty: function () {return false;}} o.hasownproperty ("เพศ"); // return false ถ้าคุณไม่เขียนอะไร // วิธีการแก้ปัญหาให้ใช้การโทร วิธีการ ({}). hasownproperty.call (o, 'เพศ'); // trueobject.prototype.hasownproperty.call (o, 'เพศ'); // true2. Object.prototype.isprototypeof ()
ภาพรวม
วิธีการ isprototypeof () ทดสอบว่าวัตถุมีอยู่ในห่วงโซ่ต้นแบบของวัตถุอื่น
ไวยากรณ์
// Object1 เป็นต้นแบบของ Object2 หรือไม่? กล่าวคือ Object2 เป็นต้นแบบของ Object1 ถ้าเป็นเช่นนั้นมันจะส่งคืนจริงมิฉะนั้น talleobject1.isprototypeof (Object2);
อธิบาย
วิธี isprototypeof () ช่วยให้คุณสามารถตรวจสอบได้ว่าวัตถุมีอยู่ในห่วงโซ่ต้นแบบของวัตถุอื่นหรือไม่
ตัวอย่าง
1. ใช้ isprototypeof () เพื่อตรวจสอบว่าวัตถุมีอยู่บนต้นแบบของวัตถุอื่น
var o = {}; person function () {}; var p1 = บุคคลใหม่ (); // สืบทอดมาจากต้นแบบดั้งเดิม แต่ตอนนี้มันเป็นไปไม่ได้ที่จะเข้าถึงบุคคล prototype = o; var p2 = บุคคลใหม่ (); // สืบทอดมาจาก oconsole.log (o.isprototypeof console.log (o.isprototypeof (p2)); // true เป็น o ต้นแบบของ p22. ใช้ ispropertyof () เพื่อตรวจสอบว่าวัตถุมีอยู่ในห่วงโซ่ต้นแบบของวัตถุอื่น
var o = {}; function person () {}; var p1 = บุคคลใหม่ (); // สืบทอดมาจากต้นแบบดั้งเดิม แต่ตอนนี้มันเป็นไปไม่ได้ที่จะเข้าถึงบุคคล. prototype = o; var p2 = บุคคลใหม่ (); // สืบทอดมาจาก oconsole.log (o.isprototypeof console.log (o.isprototypeof (p2)); // true o คือต้นแบบของ p2 console.log (object.prototype.isprototypeof (p1)); // trueconsole.log (object.prototype.isprototypeof (p2));โครงสร้างห่วงโซ่ต้นแบบของ P1 คือ p1 => บุคคลดั้งเดิม prototype => object.prototype => null
โครงสร้างห่วงโซ่ต้นแบบของ p2 คือ p2 => o => object.prototype => null
ทั้ง P1 และ P2 มี Object.prototype ดังนั้นพวกเขาจึงอยู่ในห่วงโซ่ต้นแบบของ Object.prototype
3. สรุป
1.HasownProperty: ใช้เพื่อตรวจสอบว่าวัตถุมีคุณสมบัติหรือวัตถุที่คุณให้ชื่อหรือไม่ อย่างไรก็ตามควรสังเกตว่าวิธีนี้ไม่สามารถตรวจสอบได้ว่าห่วงโซ่ต้นแบบของวัตถุมีคุณสมบัตินี้ซึ่งจะต้องเป็นสมาชิกของวัตถุหรือไม่
2. isprototypeof ใช้เพื่อตรวจสอบว่าวัตถุที่จะตรวจสอบว่าห่วงโซ่ต้นแบบของมันมีอยู่ในอินสแตนซ์วัตถุที่ระบุหรือไม่ ถ้าเป็นมันจะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ
ข้างต้นเป็นคำอธิบายโดยละเอียดของ HasownProperty () และ isprototypeof () ตัวอย่างแอตทริบิวต์ใน JS แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!