Hàm động JavaScript

Người dẫn chuyện. [00. 00] Chào các bạn. Hôm nay chúng ta sẽ nói về siêu lập trình và xem xét chi tiết một kỹ thuật siêu lập trình

[00. 06] Lập trình meta là một từ nghe khá đáng sợ, tôi nghĩ vậy. Nó thậm chí còn đáng sợ hơn khi mọi người mô tả nó với bạn như mã viết mã. Tôi không biết điều đó có nghĩa là gì, nhưng cách tốt nhất mà tôi phải mô tả siêu lập trình là mã được đánh giá động để bạn có thể sửa đổi các lớp và chức năng hiện có mà bạn có trong chương trình của mình

[00. 31] Tôi nghĩ điều đó cụ thể hơn để hiểu. Tôi nghĩ rằng một cách tốt hơn để hiểu nó là thực sự tiếp tục và xem xét một kỹ thuật siêu lập trình

[00. 42] Chúng ta sẽ thêm vào nguyên mẫu đối tượng một phương thức có tên làdefineMethod. Đây sẽ là mã thay đổi các lớp hoặc đối tượng của chúng ta để thêm các phương thức vào các đối tượng đó

[00. 57] Đây thực sự là điều mà JavaScript làm cho bạn ngay lập tức nhưng chúng tôi sẽ tạo một trình bao bọc nhỏ xinh cho nó để giúp bạn thực hiện dễ dàng hơn. Chúng ta sẽ định nghĩa một hàm lấy tên phương thức. Nó sẽ lấy thân phương thức hoặc thân hàm

[01. 13] Chúng ta sẽ gọi đối tượng. xác định tài sản. Chúng ta sẽ định nghĩa nó trên cái này, đó là bất kỳ đối tượng nào đã thực sự được gọi làdefineMethod. Chúng ta sẽ định nghĩa tên phương thức. Đây chỉ là một cú pháp nhỏ mà JavaScript cung cấp cho chúng ta ngay lập tức, vì vậy chúng ta có thể nói rằng đó là một cú pháp có thể đếm được, có nghĩa là nó sẽ hiển thị khi chúng ta kiểm tra các đối tượng của mình

[01. 35] Nó có thể định cấu hình, nghĩa là chúng tôi có thể xác định lại nó bất cứ lúc nào nếu chúng tôi muốn. Và sau đó giá trị của thuộc tính này sẽ là thân phương thức

[01. 49] Hãy xem nó hoạt động như thế nào. Tôi sẽ định nghĩa một đối tượng được gọi là con chó. Nó sẽ thuộc giống Sheltie nên bây giờ chúng ta có đối tượng này. Hãy nói con chó. defineMethod và chúng tôi sẽ cung cấp cho nó. Còn vỏ cây thì sao? . Chúng tôi sẽ chỉ trở lại gâu gâu

[02. 14] Và như vậy, bây giờ chúng ta có thể nói con chó. sủa -- rất, rất đơn giản. Kỹ thuật này được gọi là phương pháp động. Lý do nó có thể cực kỳ hữu ích là vì chúng ta có thể sử dụng nó nhiều lần để định nghĩa cùng một loại phương thức theo cùng một cách chính xác

[02. 32] Ở đây tôi có một hàm tạo người dùng, rất giống một lớp. Chúng tôi sẽ cung cấp cho người dùng một vài trạng thái mà nó có thể là. Tôi có một thư viện gọi là Lo-Dash ở đây mà chúng tôi sẽ sử dụng để lặp qua từng trạng thái. Chúng tôi sẽ nói người dùng. trạng thái. Chúng tôi sẽ nhận được từng trạng thái đó

[02. 57] Chúng ta sẽ nói điều này. định nghĩaMethod. Chúng tôi sẽ xác định là + trạng thái. viết hoa. Tôi đang nhận được chức năng viết hoa này từ một thư viện khác có tên là Hỗ trợ tích cực mà tôi sẽ chỉ cho bạn

[03. 06] Đây sẽ trở thành toàn bộ tên phương thức. Đây sẽ là. đang hoạt động hoặc đang. không hoạt động bằng cách sử dụng quy ước chữ viết hoa của JavaScript với cách viết hoa đó. Và vì vậy, đây sẽ là một chức năng mỗi lần. Chúng ta sẽ nói điều này. status= bằng với giá trị của trạng thái đã được chuyển vào

[03. 26] Chúng tôi sẽ cần đảm bảo rằng chúng tôi trả lại cái này để nó trả về đúng hoặc sai. Chúng tôi sẽ xử lý điều này trong bối cảnh này

[03. 34] Bây giờ chúng ta có thể nói user=newuser. Có thể nói người dùng. trạng thái = đang hoạt động. Sau đó, chúng tôi có hai phương pháp ở đây. Nếu chúng ta nhìn, chúng ta đã có thể thấy rằng chúng nằm trên các đối tượng người dùng của chúng ta. Có thể nói người dùng. đang hoạt động. Điều đó nên đúng. Và người dùng. không hoạt động. Điều đó nên là sai

[03. 53] Tôi hy vọng điều này sẽ giúp củng cố rằng siêu lập trình không khác gì lập trình nói chung. Chúng tôi đang xác định một số phương thức trợ giúp giúp chúng tôi viết mã mà chúng tôi muốn viết

[04. 04] Tôi đã hứa rằng tôi sẽ cho bạn xem những thư viện này. Cái đầu tiên được gọi là Hỗ trợ tích cực. Bạn có thể truy cập liên kết GitHub cho điều đó. Nó có các phương thức như số ít, số nhiều và viết hoa mà chúng tôi đã sử dụng

[04. 16] Và sau đó là Lo-Dash, bạn có thể truy cập Lo-Dash. com/docs để đọc thêm về điều đó -- đây là một số thư viện phổ biến mà tôi sử dụng trong siêu lập trình

Đôi khi bạn cần gọi một hàm Javascript nhưng chỉ biết hàm nào sẽ được gọi khi chạy. Vì vậy, bạn không thể gọi trực tiếp hàm trong mã của mình mà cần phải lấy một hàm trong một biến và có thể sử dụng nó để gọi hàm thích hợp

Tất nhiên, một giải pháp đơn giản là sử dụng lệnh if-then-else (hoặc công tắc). g

function func_abc() {
	alert("abc");
}
function call_others(function_name) {
	if (function_name == "abc") {
		func_abc();
	}
}
call_others("abc");

Vấn đề là bạn cần liên tục thay đổi hàm call_others mỗi khi bạn thêm một hàm mới có thể được gọi. Và trong trường hợp của tôi, tôi thậm chí không biết chức năng nào có sẵn. Tôi có thể tính tên hàm nhưng không biết hàm nào khả dụng

Vì vậy, điều tôi cần là thực thi một hàm có tên hàm được tính toán động. Một ứng cử viên cho điều này là hàm eval. Đây là định nghĩa của hàm eval tại w3schools

cú pháp. eval(chuỗi)

Giá trị tham số

Tham sốDescriptionstringMột biểu thức JavaScript, biến, câu lệnh hoặc chuỗi câu lệnh

Bạn có thể sử dụng nó theo cách này

function func_abc() {
	alert("abc");
}
function call_others(function_name) {
	eval("func_"+function_name+"()");
}
call_others("abc");

Điều này hoạt động khá tốt. Nhưng mặc dù hàm eval có thể rất hữu ích trong một số trường hợp, nếu bạn có thể làm mà không cần nó, bạn nên. Và trong trường hợp này có một sự thay thế

Cách khác là đi qua đối tượng cửa sổ. Trong JavaScript, mọi thứ được xác định trong phạm vi toàn cầu được định nghĩa là thuộc tính của đối tượng cửa sổ toàn cầu. Vì vậy, hàm func_abc được định nghĩa về được định nghĩa là cửa sổ. func_abc. Ngoài ra, trong JavaScript, các thuộc tính của đối tượng có thể được truy cập bằng cú pháp mảng kết hợp e. g. cửa sổ. abc và window[“abc”] là tương đương. Vì vậy, bạn có thể truy cập func_abc bằng window[“func_abc”]

Vì vậy, bạn có thể triển khai call_others như thế này

function call_others(function_name) {
	window["func_"+function_name]();
}

Lưu ý rằng nếu các chức năng của bạn không phải là chức năng toàn cục mà là chức năng của một đối tượng, bạn cũng có thể sử dụng giải pháp tương tự e. g

function MyClass() {
	this.abc = function() {
		alert("abc");
	}
}

var myObject = new MyClass();
myObject["abc"]();

Nếu điều bạn muốn làm không chỉ là gọi động một hàm mà còn tạo động một hàm được đặt tên, thì tốt nhất bạn cũng nên thực hiện với đối tượng cửa sổ bằng cách sử dụng một trong hai

Làm cách nào để tạo một hàm động trong JavaScript?

Tạo Hàm động . Cú pháp tạo hàm từ Đối tượng hàm như sau. const myFunction = new Function(arg1, arg2, … argN, body);

chức năng động với ví dụ là gì?

Hàm động là một cách gọi hàm động một cách linh hoạt . Trình biên dịch sẽ có kiến ​​thức hạn chế về những gì bạn đang làm, do đó bạn sẽ gặp lỗi thời gian chạy nếu bạn không sử dụng đầu vào và đầu ra chính xác. Một ví dụ chạy các chức năng khác nhau tùy thuộc vào đầu vào của người dùng. XÁC ĐỊNH iFunc BIẾN NHƯ SỐ SỐ KHÔNG HOÀN TÁC.

Làm cách nào để đặt tên động cho một hàm trong JavaScript?

Điều này về cơ bản sẽ làm được ở mức đơn giản nhất. " sử dụng nghiêm ngặt"; . ')}" )(); //gọi nó, để kiểm tra nó func();

3 loại chức năng trong JavaScript là gì?

Có 3 cách viết hàm trong JavaScript. .
Khai báo hàm
Biểu thức hàm
Chức năng mũi tên

Hàm()() trong JavaScript là gì?

Trong JavaScript, một hàm cho phép bạn xác định một khối mã, đặt tên cho nó và sau đó thực thi nó bao nhiêu lần tùy thích. A JavaScript function can be defined using function keyword.