簡體   English   中英

在IIFE中使用apply()

[英]Using apply() in IIFE

我正試圖在IIFE中使用apply()。 我得到一個錯誤'中間值不是一個函數'我哪里錯了?

var Person = {
  getFullName : function(firstName, lastName) {
      return firstName + ' ' + lastName;
  }
}

/* IIFE - using apply */

(function(firstName, lastName) {
   getName = function(){
    console.log("From IIFE..");
    console.log(this.getFullName(firstName, lastName));
} 
  getName();
}).apply(Person, ['John', 'Doe']);  

Plnnkr: http ://plnkr.co/edit/77db8Mu4i9RXGqt26PAP?p = preview

問題在於; ,在您的代碼中, Person對象語法不會終止,IIFE被視為其延續。

閱讀: 自動分號插入

如果你看外部庫,他們的IIFE語句以a開頭; ,用於逃避這種情況。

還要注意的是,你里面getName功能this不指Person的對象,你需要或者使用閉包變量或為傳遞價值this手動。

 var Person = { getFullName: function(firstName, lastName) { return firstName + ' ' + lastName; } } /* IIFE - using apply */ ; (function(firstName, lastName) { var self = this; var getName = function() { console.log("From IIFE.."); console.log(self.getFullName(firstName, lastName)); } getName(); }).apply(Person, ['John', 'Doe']); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM