我今天想知道javascript函数。我知道jQuery是一个javascript库,可以在带点的元素上调用函数。而javascript有时会做同样的事情(比如:.toFixed()
)
Example (in jQuery):
$("#elem").css("width", 100);
是否可以使用常规javascript函数执行相同的操作?所以我通常会做的是:
Example regular way:
var elem = document.getElementById('elem');
function doSomethingToElement(elem){
...do something to elem here...
}
doSomethingToElement(elem);
如果我想用elem.function()表示法以不同的方式调用函数,该怎么办?像:
elem.doSomethingToElement();
答案 0 :(得分:1)
为了做到这一点,你需要封装或在JavaScript中调用 - 范围。
您可以创建一个代理来保存元素,而不是在其上创建一些函数:
import {templateA, templateB, templateC} from './templates';
@Component({
template: `
${templateA}
${templateB}
${templateC}
`
})
使用它:
function ElementHolder(elem){
this.elem = elem;
}
ElementHolder.prototype.doSomethingToElement = function(){
//your code on this.elem
}
答案 1 :(得分:1)
你可以像@ jonas-w一样正确地建议。我可以补充一下:
答案的关键是你在这里elem
:
var elem = document.getElementById('elem');
与$("#elem")
后者是一个jQuery对象,赋予了所有那些很酷的jQuery方法。前者是香草DOM元素。如果你想创建对象并定义可以用点表示法在对象上调用的方法,你应该做一些阅读,例如https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS,他们提供了这个例子:
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
并且比我能解释得更好。本质上,Person函数是类的Javascript等价物。您可以创建类定义(可以这么说),然后实例化该类的实例(或对象),并使用点表示法调用它们上的方法。因此,
person = new Person("Bob");
person.greeting();
还有一种单身方法,例如,
myObject = {
foo : function() { /* do something */ }
}
然后您可以说myObject.foo()
希望这有帮助。
答案 2 :(得分:1)
你可以这样做:
function myFunction() {
throw("syntaxError: myFunction is not a
function")
//give error when myFunction() is called.
myFunction.something =
function(parameters) {
//code is here
}
}
它的工作原理是定义 myFunction
但让它看起来不存在,
然后在函数中添加 .something
。
然后当您调用 myFunction.something()
时代码运行。
希望这对您(或其他人)有所帮助!
答案 3 :(得分:0)
是的,只需扩展 Element.prototype :
Element.prototype.log = function(){
console.log(this);
};
您可以像以下一样使用它:
document.body.log();