क्या हम एक JS फाइल को दूसरे JS फाइल में लिखे फंक्शन को कॉल कर सकते हैं? क्या कोई मेरी मदद कर सकता है कि दूसरे जेएस फ़ाइल से फ़ंक्शन कैसे कॉल करें?
क्या हम एक JS फाइल को दूसरे JS फाइल में लिखे फंक्शन को कॉल कर सकते हैं? क्या कोई मेरी मदद कर सकता है कि दूसरे जेएस फ़ाइल से फ़ंक्शन कैसे कॉल करें?
जवाबों:
फ़ंक्शन को बुलाया जा सकता है जैसे कि यह उसी जेएस फ़ाइल में था जब तक कि फ़ंक्शन की परिभाषा वाली फ़ाइल फ़ंक्शन के पहले उपयोग से पहले लोड की गई हो।
अर्थात
File1.js
function alertNumber(number) {
alert(number);
}
File2.js
function alertOne() {
alertNumber("one");
}
एचटीएमएल
<head>
....
<script src="File1.js" type="text/javascript"></script>
<script src="File2.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
दूसरा तरीका काम नहीं करेगा।
जैसा कि स्टुअर्ट वेकफील्ड द्वारा सही ढंग से बताया गया है । दूसरा तरीका भी काम करेगा।
एचटीएमएल
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
क्या काम नहीं होगा:
एचटीएमएल
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script type="text/javascript">
alertOne();
</script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
</body>
यद्यपि alertOne
इसे कॉल करते समय परिभाषित किया जाता है, आंतरिक रूप से यह एक फ़ंक्शन का उपयोग करता है जो अभी भी परिभाषित नहीं है ( alertNumber
)।
ऊपर दिए गए उत्तर में एक गलत धारणा है कि फाइलों के समावेश का क्रम मायने रखता है। जैसा कि अलर्टनंबर फ़ंक्शन को तब तक नहीं कहा जाता है जब तक कि अलर्टऑन फ़ंक्शन को कॉल नहीं किया जाता है। जब तक दोनों फाइलों को समय-समय पर शामिल किया जाता है, तब तक कहा जाता है कि फाइलों का क्रम मायने नहीं रखता:
[HTML]
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[जे एस]
// File1.js
function alertNumber( n ) {
alert( n );
};
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // No errors
या यह निम्नलिखित की तरह आदेश दिया जा सकता है:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[जे एस]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
alert( n );
};
// Inline
alertOne( ); // No errors
लेकिन अगर आप ऐसा करते हैं:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
[जे एस]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
alert( n );
};
यह केवल निष्पादन के समय उपलब्ध होने वाले चर और कार्यों के बारे में मायने रखता है। जब कोई फ़ंक्शन परिभाषित होता है तो वह तब तक घोषित किए गए किसी भी चर को निष्पादित या हल नहीं करता है, जब तक कि बाद में उस फ़ंक्शन को नहीं बुलाया जाता है।
अलग स्क्रिप्ट फ़ाइलों को शामिल करना स्क्रिप्ट से अलग नहीं है उसी क्रम में उसी फ़ाइल के भीतर, आस्थगित स्क्रिप्ट के अपवाद के साथ:
<script type="text/javascript" src="myscript.js" defer="defer"></script>
तब आपको सावधान रहने की जरूरत है।
function myfunction() {
और script2 पर विचार करें : alert();}
यह काम नहीं करेगा। यह मुझे परेशान करता है क्योंकि मैं एक js फ़ाइल को संशोधित करने की कोशिश कर रहा था जो बहुत लंबी है। देखें stackoverflow.com/questions/20311604/…
this
संदर्भ साझा करेगा , यदि फ़ंक्शन एक वर्ग में है?
this
उस बिंदु पर बाध्य है जिसे फ़ंक्शन कहा जाता है (जब तक bind
कि पहले से नहीं कहा जाता है)। दो अलग-अलग फ़ाइलों में दो फ़ंक्शन this
स्वचालित रूप से संदर्भ साझा नहीं करेंगे , उपरोक्त उदाहरण में न तो कोई this
संदर्भ है, अर्थात window
गैर-सख्त या undefined
सख्त मोड में। आप this
फ़ंक्शन को ऑब्जेक्ट के सदस्य (यानी कंस्ट्रक्टर के भीतर this.method = myOtherFunc
) के रूप में या बाइंड का उपयोग करके किसी अन्य स्क्रिप्ट में समान मान साझा कर सकते हैं। यदि आपको अधिक गहराई से उत्तर की आवश्यकता है, तो कृपया अधिक विवरण के साथ एसओ प्रश्न पोस्ट करें। चीयर्स, स्टुअर्ट
यदि सभी फाइलें शामिल हैं, तो आप एक फ़ाइल से दूसरी फ़ाइल (जैसे फ़ंक्शन, चर, ऑब्जेक्ट आदि) के गुणों को कॉल कर सकते हैं ।
Js फ़ंक्शंस और वैरिएबल्स जो आप एक .js फ़ाइल में लिखते हैं - कहते हैं कि a.js अन्य js फ़ाइलों के लिए उपलब्ध होंगे - b.js को तब तक कहें जब तक a.js और b.js दोनों को निम्न शामिल करते हुए फ़ाइल में शामिल किया जाता है तंत्र (और उसी क्रम में यदि b.js में फ़ंक्शन एक a.js में कॉल करता है)।
<script language="javascript" src="a.js"> and
<script language="javascript" src="b.js">
ES6:<script>
.html का उपयोग करके कई js फ़ाइलों को शामिल करने के बजाय आप केवल एक मुख्य फ़ाइल को शामिल कर सकते हैं जैसे script.js
कि विशेषता type="module"
( समर्थन ) का उपयोग करके और अंदर script.js
आप अन्य फ़ाइलों को शामिल कर सकते हैं:
<script type="module" src="script.js"></script>
और script.js
फ़ाइल में उस तरह की एक और फ़ाइल शामिल है:
import { hello } from './module.js';
...
// alert(hello());
'मॉड्यूल.जेएस' में आपको फंक्शन / क्लास को एक्सपोर्ट करना होगा जिसे आप आयात करेंगे
export function hello() {
return "Hello World";
}
हाँ तुम कर सकते हो । तुम दोनों का उल्लेख करने की आवश्यकता JS file
करने के लिए .aspx
पेज
<script language="javascript" type="text/javascript" src="JScript1.js">
</script>
<script language="javascript" type="text/javascript" src="JScript2.js">
</script>
JScript1.js
function ani1() {
alert("1");
ani2();
}
JScript2.js
function ani2() {
alert("2");
}
आप जिस फ़ाइल में काम कर रहे हैं, उससे दूसरी js फ़ाइल में बनाए गए फ़ंक्शन को कॉल कर सकते हैं। तो इसके लिए सबसे पहले आपको बाहरी js फ़ाइल को html दस्तावेज़ में जोड़ना होगा जैसे-
<html>
<head>
<script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........
बाहरी जावास्क्रिप्ट फ़ाइल में परिभाषित फ़ंक्शन -
$.fn.yourFunctionName = function(){
alert('function called succesfully for - ' + $(this).html() );
}
इस फ़ंक्शन को अपनी वर्तमान फ़ाइल में कॉल करने के लिए, फ़ंक्शन को इस रूप में कॉल करें -
......
<script type="text/javascript">
$(function(){
$('#element').yourFunctionName();
});
</script>
यदि आप फ़ंक्शन को पैरामीटर पास करना चाहते हैं, तो फ़ंक्शन को निम्नानुसार परिभाषित करें-
$.fn.functionWithParameters = function(parameter1, parameter2){
alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}
और अपनी वर्तमान फ़ाइल में इस फ़ंक्शन को कॉल करें -
$('#element').functionWithParameters('some parameter', 'another parameter');
$.fn
दस्तावेज तैयार खंड में असाइनमेंट को लपेटना व्यर्थ है
यहाँ एक अधिक वर्णनात्मक उदाहरण दिया गया है जिसमें कोडपेन स्निपेट संलग्न है:
1.js
function fn1() {
document.getElementById("result").innerHTML += "fn1 gets called";
}
2.js
function clickedTheButton() {
fn1();
}
index.html
<html>
<head>
</head>
<body>
<button onclick="clickedTheButton()">Click me</button>
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>
</body>
</html>
उत्पादन
इस कोडपिप स्निपेट को आजमाएं: लिंक ।
जो लोग Node.js (सर्वर-साइड पर स्क्रिप्ट चला रहे हैं) में ऐसा करना चाहते हैं, उनके लिए एक और विकल्प उपयोग करना है require
और module.exports
। मॉड्यूल बनाने और इसे अन्यत्र उपयोग करने के लिए निर्यात करने के तरीके के बारे में एक छोटा उदाहरण यहां दिया गया है:
file1.js
const print = (string) => {
console.log(string);
};
exports.print = print;
file2.js
const file1 = require('./file1');
function printOne() {
file1.print("one");
};