Hướng dẫn call function name in variable javascript - gọi tên hàm trong javascript biến

Chắc chắn tránh sử dụng eval để làm một cái gì đó như thế này, hoặc bạn sẽ mở ra các lỗ hổng XSS (kịch bản chéo trang).

Ví dụ: nếu bạn sử dụng các giải pháp eval được đề xuất ở đây, một người dùng bất chính có thể gửi một liên kết đến nạn nhân của họ trông như thế này:

http://yoursite.com/foo.html?func=function(){alert('Im%20In%20Teh%20Codez');}

Và JavaScript của họ, không phải của bạn, sẽ được thực thi. Mã này có thể làm một cái gì đó tồi tệ hơn nhiều so với chỉ bật lên một cảnh báo; Nó có thể ăn cắp cookie, gửi yêu cầu đến ứng dụng của bạn, v.v.

Vì vậy, hãy chắc chắn rằng bạn không bao giờ eval mã không đáng tin cậy xuất phát từ đầu vào của người dùng (và bất cứ điều gì trên ID chuỗi truy vấn được coi là đầu vào của người dùng). Bạn có thể lấy đầu vào của người dùng làm khóa sẽ trỏ đến chức năng của mình, nhưng đảm bảo rằng bạn không thực thi bất cứ điều gì nếu chuỗi đưa ra không khớp với một khóa trong đối tượng của bạn. Ví dụ:

// set up the possible functions:
var myFuncs = {
  func1: function () { alert('Function 1'); },
  func2: function () { alert('Function 2'); },
  func3: function () { alert('Function 3'); },
  func4: function () { alert('Function 4'); },
  func5: function () { alert('Function 5'); }
};
// execute the one specified in the 'funcToRun' variable:
myFuncs[funcToRun]();

Điều này sẽ thất bại nếu biến funcToRun không trỏ đến bất cứ điều gì trong đối tượng myFuncs, nhưng nó sẽ không thực thi bất kỳ mã nào.

Bạn có thể sử dụng phương thức eval() để gọi hàm JavaScript có tên được lưu trữ trong một biến chuỗi nhưng có một phương pháp tốt hơn mà không yêu cầu Eval.

Hãy nói rằng chúng tôi có một chức năng Helloworld (E) có thể thay đổi và in nó.

function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}

Chúng tôi tuyên bố một biến có tên hàm và một biến khác lưu trữ các đối số.

// Function name to invoke
var fnName = 'helloWorld';

// Params to pass to the function
var params = 'ctrlq.org';

// Call function using Window object
window[fnName](params);

Điều này cũng có thể hữu ích để gọi các chức năng tập lệnh của Google Apps. Tuy nhiên, vì nó là mã phía máy chủ chứ không phải môi trường trình duyệt web, chúng tôi sử dụng điều này để chỉ đối tượng có chứa nó.


Phương pháp tái sử dụng

Với phương thức call(), bạn có thể viết một phương thức có thể được sử dụng trên các đối tượng khác nhau.


Tất cả các chức năng là phương pháp

Trong JavaScript, tất cả các chức năng là các phương thức đối tượng.

Nếu một hàm không phải là phương thức của đối tượng JavaScript, thì đó là một hàm của đối tượng toàn cầu (xem chương trước).

Ví dụ dưới đây tạo ra một đối tượng với 3 thuộc tính, tên FirstName, lastName, fullName.

Thí dụ

const person = {& nbsp; & nbsp; firstName: "john", & nbsp; & nbsp; lastName: "doe", & nbsp; fullName: function () {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}}
  firstName:"John",
  lastName: "Doe",
  fullName: function () {
    return this.firstName + " " + this.lastName;
  }
}

// Điều này sẽ trả lại "John Doe": person.fullname ();
person.fullName();

Hãy tự mình thử »

Trong ví dụ trên,

function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến đối tượng người.person object.

this.firstName có nghĩa là thuộc tính đầu tiên của điều này. means the firstName property of this.

Giống như:

this.firstName có nghĩa là thuộc tính đầu tiên của người. means the firstName property of person.


Cái này là cái gì?this?

Trong JavaScript, từ khóa

function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến một đối tượng.object.

Đối tượng nào phụ thuộc vào cách

function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 được gọi (được sử dụng hoặc gọi). object depends on how
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 is being invoked (used or called).

Từ khóa

function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến các đối tượng khác nhau tùy thuộc vào cách sử dụng:

Trong một phương thức đối tượng,
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến đối tượng.object.
Một mình,
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến đối tượng toàn cầu.global object.
Trong một chức năng,
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến đối tượng toàn cầu.global object.
Trong một hàm, ở chế độ nghiêm ngặt,
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 là
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
8.
Trong một sự kiện,
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 đề cập đến yếu tố đã nhận được sự kiện.element that received the event.
Các phương thức như call(),
// Function name to invoke
var fnName = 'helloWorld';

// Params to pass to the function
var params = 'ctrlq.org';

// Call function using Window object
window[fnName](params);
1 và
// Function name to invoke
var fnName = 'helloWorld';

// Params to pass to the function
var params = 'ctrlq.org';

// Call function using Window object
window[fnName](params);
2 có thể giới thiệu
function helloWorld(e) {
  e = e || 'Anonymous';
  console.log('Hello ' + e);
  return;
}
0 cho bất kỳ đối tượng nào.any object.


Phương thức call () call call ()

Phương pháp call() là phương pháp JavaScript được xác định trước.

Nó có thể được sử dụng để gọi (gọi) một phương thức với một đối tượng chủ sở hữu làm đối số (tham số).

Với call(), một đối tượng có thể sử dụng một phương thức thuộc về một đối tượng khác.

Ví dụ này gọi phương thức FullName của người, sử dụng nó trên Person1:fullName method of person, using it on person1:

Thí dụ

const person = {& nbsp; & nbsp; fullName: function () {& nbsp; & nbsp; & nbsp; & nbsp; return this.firstName + "" + this.lastName; & nbsp; & nbsp;}} const person1 = {& nbsp; & nbsp; firstName: "john", & nbsp; Tên cuối cùng: "doe"} const person2 = {& nbsp; tên đầu tiên: "Mary", & nbsp; Tên cuối cùng: "doe"}
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
const person1 = {
  firstName:"John",
  lastName: "Doe"
}
const person2 = {
  firstName:"Mary",
  lastName: "Doe"
}

// Điều này sẽ trả lại "John Doe": person.fullname.call (person1);
person.fullName.call(person1);

Hãy tự mình thử »

Ví dụ này gọi phương thức FullName của người, sử dụng nó trên Person2:fullName method of person, using it on person2:

Thí dụ

const person = {& nbsp; fullName: function () {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}} const person1 = {& nbsp; & nbsp; firstName: "john", & nbsp; Tên cuối cùng: "doe"} const person2 = {& nbsp; tên đầu tiên: "Mary", & nbsp; Tên cuối cùng: "doe"}
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
const person1 = {
  firstName:"John",
  lastName: "Doe"
}
const person2 = {
  firstName:"Mary",
  lastName: "Doe"
}

// Điều này sẽ trả lại "Mary Doe" person.fullname.call (person2);
person.fullName.call(person2);

Hãy tự mình thử »

Ví dụ này gọi phương thức FullName của người, sử dụng nó trên Person2:

const person = {& nbsp; fullName: function () {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}} const person1 = {& nbsp; & nbsp; firstName: "john", & nbsp; Tên cuối cùng: "doe"} const person2 = {& nbsp; tên đầu tiên: "Mary", & nbsp; Tên cuối cùng: "doe"}

Thí dụ

// Điều này sẽ trả lại "Mary Doe" person.fullname.call (person2);
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}

Phương thức gọi () với các đối số
  firstName:"John",
  lastName: "Doe"
}

Phương thức call() có thể chấp nhận các đối số:

Hãy tự mình thử »



Làm thế nào để bạn gọi một tên hàm javascript?

Có hai phương thức để gọi một hàm từ chuỗi được lưu trữ trong một biến. Chế độ đầu tiên là bằng cách sử dụng phương thức đối tượng cửa sổ và phương thức thứ hai là bằng cách sử dụng phương thức eval (). Phương pháp eval () cũ hơn và nó không được dùng.using the window object method and the second one is by using eval() method. The eval() method is older and it is deprecated.

Làm thế nào để bạn gọi một hàm được gán cho một biến trong JavaScript?

Cú pháp.Người dùng có thể theo dõi cú pháp dưới đây để viết biểu thức cho hàm mũi tên.Biến const = (tham số của Google) => {// Chức năng cơ thể} Biến (tham số);// Gọi hàm mũi tên.const variable = ( … parameters ) => { // function body } Variable( parameters ); // invoke the arrow function.

Làm thế nào để bạn gọi một hàm bên trong một biến?

Chúng tôi đặt hàm vào một biến nếu bên trong khối hàm, chúng tôi sử dụng phương thức trả về: var multytwo = function (a) {return a * 2;};Nếu chúng ta chỉ cần gọi chức năng này, sẽ không có gì được in, mặc dù không có gì sai với việc viết của chính chức năng.var multiplyTwo = function (a) { return a * 2; }; if we simply call this function, nothing will be printed, although nothing is wrong with the writing of the function itself.

Tên chức năng và tên biến có thể giống nhau trong JavaScript không?

Bạn mong đợi cái gì?Các biến và chức năng chia sẻ cùng một không gian tên trong JavaScript, vì vậy chúng ghi đè lên nhau.Nếu tên chức năng và tên biến giống nhau thì động cơ JS sẽ bỏ qua biến.if function name and variable name are same then JS Engine ignores the variable.