-1

我想向函数添加方法,以便我可以在链中调用它们

我想做的事:

如果您使用过 jQuery ,那么您一定看过类似的语法

$("#ID");

返回元素

$("#ID").css("property")

返回元素属性的 css 值

我如何通过定义具有相同语法的自定义方法而不使用 jQuery 来做到这一点?

4

2 回答 2

3

这是一个简单的:

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");
于 2013-04-06T13:02:21.747 回答
1

我不确定你的意思,但我会试一试。

方法链接通常是通过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

于 2013-04-06T13:06:04.483 回答