01/10/2018, 16:48

Gọi hàm Javascript sử dụng biến tên của hàm

Trong bài viết này mình chia sẻ với các bạn cách gọi hàm Javascript mà tên hàm đó được định nghĩa thông qua một biến hoặc bạn có thể hiểu đơn giản là hàm do người dùng tự đinh nghĩa hoặc hàm động. Hàm mà tên của hàm có thể được định nghĩa bằng cách ghép các chuỗi hay các giá trị khác nhau để tạo ...

Trong bài viết này mình chia sẻ với các bạn cách gọi hàm Javascript mà tên hàm đó được định nghĩa thông qua một biến hoặc bạn có thể hiểu đơn giản là hàm do người dùng tự đinh nghĩa hoặc hàm động. Hàm mà tên của hàm có thể được định nghĩa bằng cách ghép các chuỗi hay các giá trị khác nhau để tạo thành một hàm. 

Như các bạn đã biết thì trong PHP chúng ta thường sử dụng hàm call_user_func để gọi những hàm động và yêu cầu chứng thực thì ngay sau khi gọi làm.

Ví dụ:

function returnHTML( $tag, $atts = array(), $content = null ) {

    global $bbcodeFunctions;

    if ( ! isset( $bbcodeFunctions[ $tag ] ) )
        return "";

    return call_user_func( $bbcodeFunctions[ $tag ], $atts, $content );
}

Thì trong Javascript làm sao có thể gọi được các hàm như vậy.

Lưu ý: Nó không thể giống 100% so với hàm call_user_func() trong PH đâu nhé. Hoặc có thể giống mà mình chưa khai thác hết.

Thì trong Javascript có hai cách để gọi hàm thông qua hai ví dụ sau đây.

Ví dụ 1: Mình xây dựng một hàm call_user_function() dùng để xuất ra một câu thông báo

function call_user_function(){
    // Xuất ra một câu thông báo.
    alert('Xin chào các bạn');
}

Và bây giờ mình sẽ khai báo một biến  và gán nó bằng tên hàm.

var bien = 'call_user_function';

Và làm thế nào để có thể gọi hàm đó thông qua biến chúng ta vừa khai báo thì trong javascript chúng ta làm như sau.

window[bien]();

Xem kết quả

Ví dụ 2: Trong ví dụ này tên biến của hàm được được định nghĩa bằng cách ghép hai chuỗi sau để được tên hàm và mình sẽ sử dụng hàm eval() thay vì sử dụng cách trên.

var bien = 'call_user' + '_function';
// Gọi thực thi hàm
eval(func+'()');

Code đây đủ.

<script type="text/javascript">
	function call_user_function(){
	  // Xuất ra một câu thông báo.
	  alert('Xin chào các bạn');
	}
	/* Khai báo biến */
	var bien = 'call_user'+'_function';
	
    /*Gọi hàm thông qua tên biến*/
	/*window[bien](); */
	eval(bien+'()');
  </script>

Xem kết quả

Tổng kết.

Trong bài viết này mình đã hướng dẫn các bạn hai cách có thể gọi hàm javascript từ một biến tên hàm hoặc gọi hàm động. Bản thân nó có thể áp dụng được vào trường hợp nào thì hôm rồi mình có một trường hợp là mình cần thực thi một hàm javascript mà hàm đó được trả về từ một request ajax thì đây là cách hữu dụng để áp dụng.

0