เสาหินเป็นวัตถุที่ใช้ในการแบ่งเนมสเปซและจัดระเบียบคุณลักษณะและวิธีการที่เกี่ยวข้อง หากเธอสามารถสร้างอินสแตนซ์ได้เธอสามารถสร้างอินสแตนซ์ได้เพียงครั้งเดียว (เธอสามารถแต่งงานได้เพียงครั้งเดียวไม่ใช่การแต่งงานครั้งที่สอง)
รูปแบบเสาหินเป็นหนึ่งในรูปแบบพื้นฐาน แต่มีประโยชน์ที่สุดในจาวาสคริปต์
คุณสมบัติ:
1. สามารถใช้เพื่อแบ่งเนมสเปซเพื่อล้างอันตรายหรือผลกระทบของตัวแปรทั่วโลก
2. ใช้เทคโนโลยีการแตกแขนงเพื่อห่อหุ้มความแตกต่างระหว่างเบราว์เซอร์
3. รหัสสามารถจัดระเบียบได้มากขึ้นในทางเดียวทำให้ง่ายต่อการอ่านและบำรุงรักษา
การเขียนขั้นพื้นฐานของโหมดร่างกายเดี่ยว:
/* รูปแบบโมโนเมอร์พื้นฐานที่สุด*/ var her = {ชื่อ: 'anna', เพศ: 'ผู้หญิง', พูด: function () {// ตรรกะการประมวลผลบางอย่าง ... }, ทำ: ฟังก์ชั่น () {// ฟังก์ชั่นการประมวลผลอื่น ๆ ... }}}}1. หารเนมสเปซ:
var box = {width: 0, ความสูง: 0, getarea: function () {return this.width * this.width; // การเข้าถึงวัตถุใน JS จะต้องแสดงนั่นคือสิ่งนี้ไม่สามารถละเว้นได้}, init: function (w, h) {// width = w; // ความสูง = h; วิธีนี้เทียบเท่ากับการกำหนดตัวแปรทั่วโลกสองตัว (ตัวแปรที่ไม่ได้ประกาศด้วย VAR เป็นตัวแปรส่วนกลาง) // มันไม่ได้เป็นการกำหนดความกว้างและความสูงของวัตถุ // ต่อไปนี้เป็นสิ่งที่ถูกต้อง this.height = h;}} // กล่องแบ่งเนมสเปซและตัวแปรในเนมสเปซนั้นใช้ได้เฉพาะในพื้นที่สมาชิกและวิธีการทั้งหมดในโมโนเมอร์ข้างต้นเป็นสาธารณะนั่นคือพวกเขาสามารถเปลี่ยนแปลงได้โดยพลการนอกโมโนเมอร์ (แต่พวกเขาไม่สามารถเข้าถึงตัวแปรท้องถิ่น) เหตุใดโมโนเมอร์จึงมีเนมสเปซ?
ไม่ต้องกังวลมาดูกันเถอะ:
var box = {width: 0, ความสูง: 0, // ตัวแปรของ monomer getarea: function () {return width * ความสูง; // ความกว้าง, ความสูงไม่ใช่ตัวแปรโมโนเมอร์ แต่ตัวแปรส่วนกลางที่กำหนดไว้ใน init} init: ฟังก์ชัน (w, h) {width = w; ความสูง = h; box.getarea (); แจ้งเตือน (init);}เนื่องจากความกว้างและความสูงใน init ไม่ได้เริ่มต้นจึงมีการรายงานข้อผิดพลาดดังนั้นจึงเปลี่ยนเช่นนี้:
var box = {width: 0, ความสูง: 0, getarea: function () {return width * ความสูง;}, init: function (w, h) {width = w; ความสูง = h;}} window.onload = function () {width = 0; ความสูง = 0;พบว่ามันโอเค เนื่องจากความกว้างและความสูงที่ใช้โดย init และ getarea ไม่ใช่ตัวแปรที่เป็นเจ้าของโดยเสาหิน แต่เป็นตัวแปรระดับโลกเราสามารถทำการโทรแบบสุ่มนอกเสาหินโดยไม่ได้รับผลกระทบ
var box = {width: 0, ความสูง: 0, getArea: function () {return width * ความสูง; // การเข้าถึงวัตถุใน JS ต้องแสดงนั่นคือนั่นคือไม่สามารถละเว้นได้}, init: ฟังก์ชัน (w, h) {width = w; box.getarea (); แจ้งเตือน (ความกว้าง);}ด้วยวิธีนี้จะมีการรายงานว่าจะมีการรายงานข้อผิดพลาด จะเห็นได้ว่าวิธีการข้างต้นของเราไม่ได้สร้างเนมสเปซสำหรับตัวแปรทั่วโลกและตัวแปรทั่วโลกนำมาซึ่งอันตราย ดังนั้นคำชั้นนำที่ถูกต้องมาตรวจสอบ:
var box = {width: 2, ความสูง: 2, getarea: function () {return this.width * this.height; / / js การเข้าถึงจะต้องแสดงนั่นคือนั่นคือไม่สามารถละเว้นได้}, init: function (w, h) {this.width = w; // มันจะไม่ส่งผลกระทบต่อตัวแปรท้องถิ่นในเสาหินนั่นคือความสูงของเนมสเปซ = 0; // มันจะไม่ส่งผลกระทบต่อตัวแปรท้องถิ่นในเสาหินนั่นคือความกว้าง namespace var = box.getarea (); แจ้งเตือน (ความกว้าง);}จะเห็นได้ว่าความกว้างและความสูงในหน้าต่างการโหลดไม่มีสัญญาณรบกวนเนื่องจากโมโนเมอร์ได้สร้างเนมสเปซสำหรับความกว้างและความสูงในโมโนเมอร์
2. คุณสมบัติสมาชิก:
แม้ว่าจะไม่มีการมุ่งเน้นวัตถุที่เข้มงวด (OOP) ในจาวาสคริปต์ แต่เราสามารถใช้การปิดเพื่อเลียนแบบได้ ท้ายที่สุดมันไม่ดีที่จะตั้งค่าตัวแปรบางอย่างให้สาธารณะ
var her = (function () {var name = 'anna'; var sex = 'women'; return {getArea: function () {return name + 'คือ' + sex;}, init: function (b) {name = b;}}}) (); window.onload = function () {her.name = 'Jock'; // ไม่สามารถเข้าถึงการแจ้งเตือน (ger.getarea ()); her.init ('lous'); Alert (her.getarea ());}ตัวแปรส่วนตัวและวิธีการอ่านอย่างเดียวในขณะที่ตัวแปรและวิธีการสาธารณะสามารถอ่านได้
เข้าถึง:
สำหรับสมาชิกส่วนตัวคุณสามารถเข้าถึงได้โดยตรงโดยไม่ต้องแก้ไขใด ๆ ก่อนหน้าพวกเขา
สำหรับการเข้าถึงสาธารณะ“ สิ่งนี้” ควรเพิ่มก่อนขอบเขตโมโนเมอร์และ“ เธอ” (ชื่อ Monobody)
3. ใช้เทคโนโลยีสาขาเพื่อห่อหุ้มความแตกต่างระหว่างเบราว์เซอร์
หมายเหตุ:
. ตรวจสอบให้แน่ใจว่าใช้การปิดเพื่อให้ได้ผลผูกพันทันที
ข. แยกแต่ละสาขาด้วยเครื่องหมายอัฒภาค
ค. สิ่งสุดท้ายที่กลับมาคือชื่อของสาขา
d. ใช้ชื่อวิธีเดียว + ชื่อสาขาเมื่อโทร;
// ใช้เทคโนโลยีการแตกแขนงของโมโนเมอร์เพื่อกำหนดวัตถุ XHR (xmlhttprequest) และคุณต้องใช้การปิดเพื่อใช้ var xhr = (ฟังก์ชั่น () {// สาม branchesvar standard = {cxhr: function () {ส่งกลับ xmlhttprequest (new new activexObject ('msxml2.xmlhttp');}}; var activexold = {cxhr: function () {ส่งคืนใหม่ activexobject ('microsoft.xmlhttp');}}; // เพื่อกำหนด (กำหนด) สาขาหากไม่มีข้อผิดพลาดถูกโยน} catch (e) {ลอง {testObject = activexNew.cxhr (); return activexNew;} catch (e) {ลอง {testObject = activexold.cxhr () returnxnew; XmlhttprequestObject ล้มเหลว! ');}}}}) (); window.onload = function () {การแจ้งเตือนข้างต้นเป็นการวิเคราะห์ที่ครอบคลุมของแบบจำลองร่างกายเดียวของรูปแบบการออกแบบ JavaScript ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!