我想向函数添加方法,以便我可以在链中调用它们
我想做的事:
如果您使用过 jQuery ,那么您一定看过类似的语法
$("#ID");
返回元素
$("#ID").css("property")
返回元素属性的 css 值
我如何通过定义具有相同语法的自定义方法而不使用 jQuery 来做到这一点?
我想向函数添加方法,以便我可以在链中调用它们
我想做的事:
如果您使用过 jQuery ,那么您一定看过类似的语法
$("#ID");
返回元素
$("#ID").css("property")
返回元素属性的 css 值
我如何通过定义具有相同语法的自定义方法而不使用 jQuery 来做到这一点?
这是一个简单的:
function Get( element_id ) {
this.node = document.querySelector(element_id);
this.css = function(prop, val) {};
}
var get = function( element_id )
{
return new Get( element_id );
};
get('#ID').css("property");
我不确定你的意思,但我会试一试。
方法链接通常是通过this
从原型的方法返回对象来执行的:
function MyClass(...) {
...
}
MyClass.prototype = {
methodOne: function(...) {
...
return this;
},
methodTwo: function(...) {
...
return this;
},
...
};
所以你可以这样做:
var obj = new MyClass(...);
obj.methodOne(...).methodTwo(...);
当您实际上并不期望返回值或无法应用它时,这可能很有用。例如:
function MyClass(name) {
this.name = name;
}
MyClass.prototype.greet = function(greeting) {
return greeting + " " + this.name;
}
var obj = new MyClass("John");
alert(obj.greet("Hello")); // It alerts "Hello John".
在这种情况下,您需要方法中的值greet
。