我正试图在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']);
Run Code Online (Sandbox Code Playgroud)
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']);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |