Bisakah kita memanggil fungsi yang ditulis dalam satu file JS dalam file JS lainnya? Adakah yang bisa membantu saya cara memanggil fungsi dari file JS lain?
Bisakah kita memanggil fungsi yang ditulis dalam satu file JS dalam file JS lainnya? Adakah yang bisa membantu saya cara memanggil fungsi dari file JS lain?
Jawaban:
Fungsi ini dapat disebut seolah-olah berada di File JS yang sama selama file yang mengandung definisi fungsi telah dimuat sebelum penggunaan pertama fungsi tersebut.
Yaitu
File1.js
function alertNumber(number) {
alert(number);
}
File2.js
function alertOne() {
alertNumber("one");
}
HTML
<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>
Cara lain tidak akan berhasil.
Seperti yang ditunjukkan dengan tepat oleh Stuart Wakefield . Cara lain juga akan berhasil.
HTML
<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>
Apa yang tidak akan berhasil adalah:
HTML
<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>
Meskipun alertOne
didefinisikan saat memanggilnya, secara internal ia menggunakan fungsi yang masih belum didefinisikan ( alertNumber
).
Jawaban di atas memiliki asumsi yang salah bahwa urutan penyertaan file penting. Karena fungsi alertNumber tidak dipanggil sampai fungsi alertOne dipanggil. Selama kedua file dimasukkan oleh waktu waspada, satu disebut urutan file tidak masalah:
[HTML]
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File1.js
function alertNumber( n ) {
alert( n );
};
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // No errors
Atau bisa dipesan seperti berikut:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
alert( n );
};
// Inline
alertOne( ); // No errors
Tetapi jika Anda melakukan ini:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
alert( n );
};
Itu hanya masalah tentang variabel dan fungsi yang tersedia pada saat eksekusi. Ketika suatu fungsi didefinisikan, ia tidak menjalankan atau menyelesaikan variabel apa pun yang dideklarasikan di dalam sampai fungsi itu kemudian dipanggil.
Memasukkan file skrip yang berbeda tidak berbeda dengan skrip yang berada dalam urutan itu dalam file yang sama, dengan pengecualian skrip yang ditangguhkan:
<script type="text/javascript" src="myscript.js" defer="defer"></script>
maka kamu perlu hati-hati.
function myfunction() {
dan script2: alert();}
Ini tidak akan bekerja. Itu mengganggu saya karena saya mencoba memodulasi file js yang terlalu panjang. Lihat stackoverflow.com/questions/20311604/...
this
konteks, jika salah satu fungsi ada di kelas?
this
terikat pada titik fungsi dipanggil (kecuali bind
disebut sebelumnya). Dua fungsi dalam dua file terpisah tidak akan berbagi this
konteks secara otomatis, dalam contoh di atas tidak ada this
konteks, yaitu window
dalam undefined
mode non-ketat atau ketat. Anda bisa membuat fungsi di skrip lain berbagi nilai yang sama this
dengan menetapkan fungsi sebagai anggota objek (yaitu di dalam konstruktor this.method = myOtherFunc
) atau menggunakan bind. Silakan kirim pertanyaan SO dengan lebih detail jika Anda membutuhkan jawaban yang lebih mendalam. Cheers, Stuart
Jika semua file disertakan, Anda dapat memanggil properti dari satu file ke yang lain (seperti fungsi, variabel, objek dll.)
Js fungsi dan variabel yang Anda tulis dalam satu file js - katakanlah a.js akan tersedia untuk file js lain - katakanlah b.js selama kedua a.js dan b.js disertakan dalam file menggunakan berikut termasuk mekanisme (dan dalam urutan yang sama jika fungsi dalam b.js memanggil satu dalam a.js).
<script language="javascript" src="a.js"> and
<script language="javascript" src="b.js">
ES6: Alih-alih memasukkan banyak file js menggunakan <script>
dalam .html Anda dapat memasukkan hanya satu file utama misalnya script.js
menggunakan atribut type="module"
( dukungan ) dan di dalamnya script.js
Anda dapat memasukkan file lain:
<script type="module" src="script.js"></script>
Dan dalam script.js
file termasuk file lain seperti itu:
import { hello } from './module.js';
...
// alert(hello());
Dalam 'module.js' Anda harus mengekspor fungsi / kelas yang akan Anda impor
export function hello() {
return "Hello World";
}
ya kamu bisa . Anda perlu merujuk keduanya JS file
ke .aspx
halaman tersebut
<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");
}
Anda dapat memanggil fungsi yang dibuat dalam file js lain dari file yang sedang Anda kerjakan. Jadi untuk ini pertama-tama Anda perlu menambahkan file js eksternal ke dalam dokumen html sebagai-
<html>
<head>
<script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........
Fungsi yang ditentukan dalam file javascript eksternal -
$.fn.yourFunctionName = function(){
alert('function called succesfully for - ' + $(this).html() );
}
Untuk memanggil fungsi ini di file Anda saat ini, panggil saja fungsi sebagai -
......
<script type="text/javascript">
$(function(){
$('#element').yourFunctionName();
});
</script>
Jika Anda ingin meneruskan parameter ke fungsi, maka tentukan fungsi sebagai-
$.fn.functionWithParameters = function(parameter1, parameter2){
alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}
Dan panggil fungsi ini dalam file Anda saat ini sebagai -
$('#element').functionWithParameters('some parameter', 'another parameter');
$.fn
penugasan dalam klausa siap dokumen tidak ada gunanya
Berikut adalah contoh yang lebih deskriptif dengan cuplikan CodePen terlampir:
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>
keluaran
Coba snippet CodePen ini: tautan .
Bagi mereka yang ingin melakukan ini di Node.js (menjalankan skrip di sisi server) opsi lain adalah menggunakan require
dan module.exports
. Berikut adalah contoh singkat tentang cara membuat modul dan mengekspornya untuk digunakan di tempat lain:
file1.js
const print = (string) => {
console.log(string);
};
exports.print = print;
file2.js
const file1 = require('./file1');
function printOne() {
file1.print("one");
};