[英]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.