ก่อนอื่นให้ฉันเริ่มต้นด้วยการยอมรับว่าฉันเป็น noob ใน JavaScript ดังนั้นคำถามอาจไม่ชัดเจนในระดับพื้นฐานและอาจขาดข้อมูลเพียงพอที่จะช่วยฉันได้
พื้นหลัง
องค์กรของฉันมี IDE ที่ใช้ Eclipse ภายในสำหรับ JavaScript สิ่งที่เราต้องทำคือเขียนสคริปต์ใน JavaScript และดำเนินการโดยตรง ฉันเดาว่ามันใช้ Rhino เนื่องจากฉันได้เห็นมันในการติดตามสแต็กของข้อยกเว้นบางประการ
รหัสของฉันทำงานในไฟล์ ".js" 3 ไฟล์
สคริปต์-1: ประกาศตัวแปรโกลบอลและสร้างอินสแตนซ์ให้เป็นอ็อบเจ็กต์ Java
importClass(java.util.HashMap);
var hmTCResult = new HashMap();
Script-2: ดำเนินการบางอย่างโดยใช้ตัวแปรร่วมจาก Script-1
Script-2.prototype.run = function() {
hmTCResult.put("Result", "Fail");
};
changeStatus = function(strStatus){
hmTCResult.put("Result", strStatus);
};
Script-3: ฟังก์ชันการโทรใน Script-2 ซึ่งใช้ตัวแปรส่วนกลาง
changeStatus("Pass")
คำจำกัดความของปัญหา
เมื่อมาจาก Script-3 ฉันเรียกใช้ฟังก์ชันใน Script-2 ดูเหมือนจะไม่เลือกตัวแปรอินสแตนซ์และฟังก์ชันของฉันก็ล้มเหลว กล่าวคือ ฉันได้รับข้อยกเว้น "hmTCResult ไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ" โปรดทราบว่าตัวแปรเดียวกัน hmTCResult ทำงานได้ดีในสคริปต์ 1
ฉันได้อ่านขอบเขตและบริบทใน JavaScript แล้ว แต่ยังไม่สามารถเจาะลึกได้ เนื่องจากฉันไม่เห็นอย่างชัดเจนใน IDE
เรายินดีที่จะให้ข้อมูลเพิ่มเติมหากจำเป็น
Script-2
ไม่ใช่ตัวระบุ JavaScript ที่ถูกต้อง ตั้งชื่อมันว่าScript2
หรือScript_2
- person J. K.   schedule 21.10.2012hmTCResult
ไม่ใช่ตัวแปรร่วมจริงๆ เหมือนที่changeStatus
เป็น บางทีสภาพแวดล้อมการเขียนสคริปต์ของคุณ (ฉันไม่รู้ว่าไฟล์สคริปต์สามไฟล์ของคุณทำงานอย่างไร) ดำเนินการทุกอย่างในขอบเขตทั้งไฟล์ ลองลบคำหลักvar
หรือกำหนดhmTCResult
ให้กับวัตถุส่วนกลางของคุณอย่างชัดเจน - person Bergi   schedule 21.10.2012