// พิษ Object.prototypeobject.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; // 1'bar 'ใน foo; // truefoo.hasownproperty ('bar'); // talsefoo.hasownproperty ('goo'); // จริงที่นี่มีเพียง HasownProperty เท่านั้นที่สามารถให้คำตอบที่ถูกต้องซึ่งจำเป็นมากเมื่อพูดถึงการสำรวจคุณสมบัติของวัตถุ ไม่มีวิธีอื่นใดใน JavaScript ที่จะบอกว่าแอตทริบิวต์ถูกกำหนดไว้ในวัตถุเองหรือสืบทอดมาจากห่วงโซ่ต้นแบบ
HasownProperty เป็นทรัพย์สิน
JavaScript ไม่ได้ตั้งค่า HasownProperty เป็นคำที่ละเอียดอ่อนซึ่งหมายความว่าคุณสามารถมีคุณสมบัติชื่อ HasownProperty ในเวลานี้คุณไม่สามารถใช้วิธีการ HasownProperty ของคุณในการตัดสินคุณสมบัติได้อีกต่อไปดังนั้นคุณต้องใช้วิธีการ HasownProperty ภายนอกเพื่อทำการตัดสิน
var foo = {hasownProperty: function () {return false; }, bar: 'นี่เป็นมังกร'}; foo.hasownproperty ('bar'); // ส่งคืน FALSE // มักจะใช้ HasownProperty ของวัตถุอื่นและเรียกมันด้วย 'this' Set to foo ({}). hasownproperty.call (foo, 'bar'); // true // นอกจากนี้ยังเป็นไปได้ที่จะใช้ HasownProperty จากวัตถุ // ต้นแบบสำหรับจุดประสงค์นี้ bject.prototype.hasownproperty.call (foo, 'bar'); // จริงสรุป
เมื่อตัดสินว่าแอตทริบิวต์ของวัตถุมีอยู่แล้ว HasownProperty เป็นวิธีเดียวที่สามารถพึ่งพาได้ ที่นี่เรายังต้องการเตือนคุณว่าเมื่อเราใช้ในการวนซ้ำไปยังวัตถุสำรวจการใช้ HasownProperty จะดีในการหลีกเลี่ยงปัญหาที่เกิดจากการขยายวัตถุต้นแบบ
ต่อไปนี้เป็นส่วนเพิ่มเติมจากชาวเน็ตอื่น ๆ :
HasownProperty () บนต้นแบบวัตถุวัตถุใน JavaScript ใช้เพื่อกำหนดว่าคุณสมบัติถูกกำหนดไว้ในวัตถุเองแทนที่จะสืบทอดมาจากห่วงโซ่ต้นแบบ
obj.hasownproperty (Prop)
พารามิเตอร์เสา
ชื่อสตริงแอตทริบิวต์หรือสัญลักษณ์ (ES6) ที่จะตรวจพบ
o = วัตถุใหม่ (); o.prop = 'มีอยู่'; o.hasownproperty ('prop'); // ส่งคืน trueo.hasownproperty ('toString'); // ส่งคืน falseo.hasownproperty ('hasownproperty'); // return falseใช้ HasownProperty เป็นชื่อคุณสมบัติของวัตถุ
เนื่องจาก JavaScript ไม่ได้ใช้ HasownProperty เป็นคำที่ละเอียดอ่อนจึงเป็นไปได้มากที่เราจะตั้งชื่อคุณสมบัติหนึ่งของวัตถุเป็น HasownProperty เพื่อให้เราไม่สามารถใช้วิธีการ HasownProperty ของต้นแบบวัตถุเพื่อตรวจสอบว่าคุณสมบัติมาจากห่วงโซ่ต้นแบบหรือไม่
var foo = {hasownProperty: function () {return false; }, bar: 'นี่เป็นมังกร'}; foo.hasownproperty ('bar'); // ส่งคืนเท็จเสมอวิธีแก้ปัญหานี้โดยไม่ใช้วัตถุนี้วิธีการ hasownproperty? เราจำเป็นต้องใช้วิธีการ HasownProperty จริงบนห่วงโซ่ต้นแบบ:
({}). hasownproperty.call (foo, 'bar'); // true // หรือ: object.prototype.hasownproperty.call (foo, 'bar'); // จริงการอ้างอิง: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/object/hasownproperty