ตัวอย่างเช่นกำหนดวิธีการโทรสองวิธีสำหรับฟังก์ชัน:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getInfo () {
var info = {
ข้อความ: "ข้อความ"
-
ข้อมูลส่งคืน;
-
1. var info1 = getInfo ();
2. var info2 = ใหม่ getInfo ();
มีความแตกต่างระหว่าง 1 และ 2 หรือไม่? ค่าที่ได้รับจาก Info1 และ Info2 เหมือนกันหรือไม่?
ประเภทแรกนั้นง่ายมากและใช้งานมากซึ่งก็คือการดำเนินการฟังก์ชั่นยอมรับค่าส่งคืนของฟังก์ชั่นและกำหนดให้กับวัตถุ Info1
สถานการณ์ที่สองมักจะหายาก ก่อนอื่นฟังก์ชั่นก็เป็นวัตถุ สามารถสร้างอินสแตนซ์ได้หากวัตถุนั้นแน่ใจ (อินสแตนซ์กำลังเรียกตัวสร้างของวัตถุเพื่อเริ่มต้นวัตถุ) กรณีที่สองทั้งหมดคือการเรียกตัวสร้างวัตถุฟังก์ชั่น GetInfo และรับอินสแตนซ์ที่เริ่มต้นโดยตัวสร้าง (โดยปกติแล้ว) สิ่งที่พิเศษมากขึ้นเกี่ยวกับฟังก์ชั่นคือถ้าคอนสตรัคเตอร์แสดงค่าส่งคืนค่าส่งคืนจะถูกแทนที่ด้วยค่าส่งคืน ดังนั้นในกรณีที่สองใหม่ GetInfo คือการเรียกตัวสร้าง (ตัวสร้างของฟังก์ชั่นคือคำจำกัดความของตัวเอง) และรับข้อมูลค่าคืน
แอปพลิเคชัน:
1. ตัวอย่างเช่น HTML กำหนดวัตถุ DOM: <div id = "domid"> </div> รหัส JS มีดังนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น $ (domid) {
var dom = document.getElementById (domid);
กลับ DOM;
-
window.onload = function () {
var dom1 = ใหม่ $ ("domid");
var dom2 = $ ("domid");
การแจ้งเตือน (DOM1 == DOM2);
-
จากนั้นข้อความแจ้งเตือนการแจ้งเตือนจะแสดงจริง เหตุผลที่ฉันใช้ $ เป็นชื่อฟังก์ชั่นเป็นเพราะเมื่อใช้ฟังก์ชั่นนี้มันเป็นสไตล์ของ JQuery หรือไม่? อันที่จริงแล้วคำจำกัดความของฟังก์ชั่นรูปแบบนี้ใช้กับตัวสร้าง jQuery ไม่ว่าคุณจะใช้ใหม่หรือเรียกใช้ฟังก์ชันโดยตรงค่าที่ส่งคืนจะเหมือนกัน
2. กำหนดวัตถุ XMLHTTTPREQUEST ที่เข้ากันได้ (ตัวอย่างนี้ตัดตอนมาจากมาตรา 18.1 ของคู่มือ JavaScript ที่เชื่อถือได้)
ทุกคนรู้ว่าเบราว์เซอร์ที่แตกต่างกันอาจสนับสนุนการสื่อสารแบบอะซิงโครนัสแตกต่างกัน Early IEs ใช้วิธีการ ActiveX รหัสต่อไปนี้กำหนดวัตถุ xmlhttprequest ที่เข้ากันได้:
การคัดลอกรหัสมีดังนี้:
if (window.xmlhttpRequest === ไม่ได้กำหนด) {
window.xmlhttpRequest = function () {
พยายาม {
// ถ้ามีให้ใช้วัตถุ ActiveX เวอร์ชันล่าสุด
ส่งคืน ActiveXObject ใหม่ ("msxml2.xmlhttp.6.0");
} catch (ex1) {
พยายาม {
ส่งคืน ActiveXObject ใหม่ ("msxml2.xmlhttp.3.0");
} catch (ex2) {
โยนข้อผิดพลาดใหม่ ("XMLHTTPREQUEST ไม่รองรับ"))
-
-
-
-
ด้วยวิธีนี้คุณสามารถกำหนดโดยตรงผ่าน var xhr = ใหม่ xmlhttprequest () ไม่ว่าจะเป็นเบราว์เซอร์หรือเบราว์เซอร์ Firefox