我的任务是创建这个: element()
element()
将会有像 shake()
这样的方法。
我认为我从没有方法的 element()
开始,使用了 function element()
来实现这个。
function element(theElement) { // element() has a parameter named toReturn, but theElement probably makes more sense
return document.querySelectorAll(theElement);
}
接下来我开始研究方法。但首先,我必须删除该函数(就我所知)并将其替换为 class
。我知道你需要使用类来处理诸如 element().method
的事情。
class element {
constructor(theElement) {
return document.querySelectorAll(theElement)
}
}
带有方法的版本
class element {
constructor(theElement) {
param1 = theElement;
return document.querySelectorAll(theElement);
}
...
static shake(shakeBy = 10) {
...
}
...
}
但是,我遇到了另一个问题,并出现错误提示,指出类不能在没有 new
的情况下被调用。然后事情就变得非常奇怪:
var something = new element('.putis') // NANI?
所以,我决定让 element()
返回以下内容:[new element(param1), document.querySelectorAll(param1)]
。
这样做不仅可以调用类,而且new element()
将返回document.querySelectorAll(param1)
和new element()
,new element()
又会返回new element()
,new element()
也会返回new element()
,如此连续下去,返回树会变得越来越高,直到最终达到堆栈限制的那个点。返回树看起来像这样:
-------------------stack limit-----------------
\ /
... ...
\ /
new element() query selector
\ /
new element() query selector
\ /
new element() query selector
\ /
element()
---the ground---------------------
所以我改用对象,并做了这个:
var element =
[
function(a) {
param1 = a;
return document.querySelectorAll(a)
},
{
// example method
"print": function() {
window.alert('Hello, my name is' + param1;)
}
}
]
但是我收到的错误信息是element()不是一个函数
,虽然我认为element()
是一个函数。显然它是一个数组,但这个数组应该让元素键的值同时返回两个内容。
我尝试过这些解决方案:
this.direction = function() {
letterIndex = 0;
rotateProp = new String();
do {
rotateProp += elements.style.transform.charAt(letterIndex);
++letterIndex;
}
while (elements.style.transform.charAt(letterIndex) != '(');
}
var element = (toReturn) => {
...
}
但是他们都失败了。
我该如何完成我的任务?
我知道我不应该使用类,因为我遇到了与类相关的问题,就像之前提到的一样:尝试调用类都会失败。