บทความนี้อธิบายถึงการใช้มรดกของตัวสร้างที่สามารถใช้งานได้โดย JS encapsulation แบ่งปันสำหรับการอ้างอิงของคุณ รายละเอียดมีดังนี้:
มาดูรหัสต่อไปนี้
วิธีการที่ใช้ในไลบรารี (yui):
คัดลอกรหัสดังต่อไปนี้: ฟังก์ชั่นขยาย (ลูก, พาเรนต์) {
var f = function () {};
f.prototype = parent.prototype;
child.prototype = new f ();
child.prototype.constructor = เด็ก;
child.uber = parent.prototype;
-
นอกจากนี้ยังมีวิธีการคัดลอกมรดกคัดลอกแอตทริบิวต์:
วิธีนี้แตกต่างจากก่อน เนื่องจากต้นแบบของเด็กได้รับการขยายออกไปจึงไม่จำเป็นต้องรีเซ็ต phild.prototype.constructor ทรัพย์สินเพราะมันจะไม่ถูกเขียนทับอีกครั้ง
เมื่อเปรียบเทียบกับวิธีการก่อนหน้านี้วิธีนี้ดีกว่าในด้านประสิทธิภาพ เพราะสิ่งที่ดำเนินการที่นี่คือสำเนาของต้นแบบวัตถุย่อยทีละตัว แทนที่จะเป็นแบบสอบถามโซ่ต้นแบบอย่างง่าย
วิธีนี้ใช้ได้เฉพาะกับวัตถุที่มีชนิดข้อมูลพื้นฐานเท่านั้น ทุกประเภทวัตถุรวมถึงฟังก์ชั่นและอาร์เรย์ไม่สามารถจำลองได้ พวกเขาสนับสนุนการอ้างอิงผ่านเท่านั้น
คัดลอกรหัสดังต่อไปนี้: ฟังก์ชั่น Extend2 (ลูก, พาเรนต์) {
var p = parent.prototype;
var c = child.prototype;
สำหรับ (var i ใน p) {
c [i] = p [i];
-
c.uber = p;
-
var shape = function () {}
var twodshape = function () {}
shape.prototype.name = 'shape';
shape.prototype.toString = function () {
ส่งคืนสิ่งนี้ชื่อ;
-
Extend2 (twodshape, รูปร่าง);
var t = ใหม่ twodshape ();
t.name
//-> "รูปร่าง"
T.ToString ();
//-> "รูปร่าง"
twodshape.prototype.name = 'twodshape';
t.name
//-> "รูปร่าง 2D"
T.ToString ();
//-> "รูปร่าง 2D"
twodshape.prototype.toString === Shape.prototype.toString
//-> จริง
twodshape.prototype.name === Shape.prototype.name
//-> เท็จ
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน