สไตล์การเขียนต้นฉบับของฉันเป็นเช่นนี้:
function dog () {this.name = 'hachi';} dog.prototype = {makenoise: function () {Alert ('Wangwangwang'); -ต่อมาฉันเห็นวิธีการเขียนที่ซับซ้อนและดูเหมือนไม่จำเป็นอีกครั้ง:
Function Dog () {var privateVariable = 'Secret'; var fn = function () {// ... } fn.prototype = {makenoise: function () {Alert ('Wangwangwang'); }} return fn;}ฟังก์ชั่นสุนัขที่นี่เป็นฟังก์ชั่นที่ผลิตชั้นเรียนซึ่งส่งคืนคลาสสุนัขจริง
ฉันรู้สึกว่าประโยชน์ของการทำเช่นนี้คือการใช้บรรจุภัณฑ์ให้ดีขึ้น
ตัวอย่างเช่น PrivateVariable ที่นี่เป็นตัวแปรส่วนตัว:
var d = สุนัขใหม่; d.privateVariable // undefined
นอกจากนี้หากคุณเพิ่มประโยคในตอนท้ายของตัวอย่างแรก:
dog.prototype = {//e...wtf ??}สุนัขไม่ใช่สุนัขด้วยวิธีนี้
ความเข้าใจในภายหลัง:
วิธีการข้างต้นในการสร้างคลาสใหม่เขียนวัตถุต้นแบบใหม่โดยตรง ด้วยวิธีนี้คุณสมบัติในตัวของต้นแบบจะหายไป (อาร์กิวเมนต์โทรใช้ ฯลฯ )
วิธีการต่อไปนี้ในการสร้างคลาสใหม่ดูเหมือนจะดีกว่า:
var dog = function (ชื่อ) {this.name = name; var privateVariable = 'คุณไม่เห็นฉัน'; this.getPrivate = function () {return privateVariable;};}