我正在创建一个类,使我能够通过选择器选择任何元素,并在其上快速应用JS方法。下面的代码有一个小问题(这是我代码的第一部分)。当我使用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!';
};
}提前感谢!
发布于 2016-08-26 21:24:57
错误消息指向以下一行:
$.prototype[name] = function(...args) {因为您使用的精简器不理解ECMAScript 6的扩展语法。
发布于 2016-08-26 21:27:53
您所得到的错误指的是扩展运算符- ...args。
扩展运算符是相对较新的,可能不支持您的小型机。
要修复错误,请从第31行的参数列表中删除...args。在第36行,使用arguments对象而不是- fn(that, arguments[0]);
https://stackoverflow.com/questions/39174738
复制相似问题