我正在创建一个类,使我能够通过选择器选择任何元素并快速应用JS方法。我对代码bellow(这是我的代码的第一部分)有一个小问题。当我用Koala或jscompress.com压缩它时,我收到一条错误消息:
SyntaxError:预期名称(行:31,col:31)
该行对应于以$.prototype.method
开头的包装器方法。我不明白错误是什么,因为我的代码在本地和实时网站上完全正常工作。
不知怎的,那里出现了错误。我尝试将变量name
更改为另一个,但它给了我同样的错误。
var $ = function(element) {
if(!(this instanceof $)) {
return new $(element);
}
// select all elements with this identifier
this.elements = document.querySelectorAll(element);
this.length = this.elements.length;
if(this.length == 0) {
return this;
}
// by default select the first element of querySelectorAll
this.element = this.elements[0];
this.css = this.element.style;
// first method applied will be exectuted directly
this.delayTime = 0;
}
// add a time to the delay timer
$.prototype.delay = function(delayTime) {
// set a delay for the following method applied
this.delayTime += delayTime;
return this;
}
// wraps the method into a setTimeout
$.prototype.method = function(name, fn) {
$.prototype[name] = function(...args) {
var that = this;
if(this.length != 0) {
setTimeout(function() {
// only one relevant param is passed
fn(that, args[0]);
}, this.delayTime);
return this;
}
return 'element does not exist!';
};
}
提前致谢!
答案 0 :(得分:3)
错误消息指向此行:
$.prototype[name] = function(...args) {
因为您使用的缩小器不理解ECMAScript 6扩展语法。
答案 1 :(得分:1)
您获得的错误是指差价运算符 - ...args
。
点差运算符相对较新,可能不受你的minifier支持。
要解决此错误,请从第31行的参数列表中删除...args
。在第36行,使用arguments
对象代替 - fn(that, arguments[0]);