繁体   English   中英

以参数为对象的Javascript函数

[英]Javascript function with arguments as object

我需要知道如何做类似jQuery的

$('x').y
使我的网站。 有人可以帮忙吗?
PS:我需要类似的东西
  myfunction('something')。method 

对不起,如果太困惑了,我的英语说得不太好...

要进行类似的工作:

myfunction('something').method()

myfunction只需要返回一个具有.method属性的对象。 jQuery就是这样做到的。

这是一个简单的例子:

function myfunction() {
    // do whatever your function wants here

    // then return an object with the .method property
    return {
        method: function() {
            console.log("Hi");
            return this;
        }
    }
}

myfunction().method();

而且,如果您从每个方法返回this方法,则可以链接多个方法(就像jQuery一样):

function myfunction() {
    return {
        cntr: 0,
        method1: function() {
            console.log("Hi");
            ++this.cntr;
            return this;
        },
        method2: function() {
            console.log("Goodbye");
            ++this.cntr;
            return this;
        }
    }
}

myfunction().method1().method2();
$.fn.greenify = function() {
    this.css( "color", "green" );
};

$( "a" ).greenify(); // Makes all the links green.

在这里查看: http : //learn.jquery.com/plugins/basic-plugin-creation/

用属性创建对象。 通过字符串查找那些属性。

_("name").method();
_("name2").method();



function _ (property) {
    var obj = {
        name : {
            method : function () { }
        },
        name2 : {
            method : function () { }
        }
    };

    return obj[property];
}

这是一个非常非常基础的版本,没有经过优化,并且很难扩展和维护。
jQuery通过查找对象并将其缓存来工作。
在这里,您无需查找DOM对象; 这只是函数内部的一个对象,每次调用该函数时都会对其进行重建。

...为什么特别需要这个?
为什么不能使用其他系统?

进行这样的事情非常容易,并且不需要很多JS知识。 维护它很困难。
可以完成一些易于维护的工作(例如jQuery或Angular),但这是很多工作,在尝试之前,您确实必须了解JS。

第一版,得到的想法是:

function multiplyBy(n) {
    return function(arg) {
        return n * arg;
    };
}

var multiplyByFive = multiplyBy(5);
console.log(multiplyByFive(10)); // Outputs 50

换句话说,函数只是值,通过在其名称(引用)之后粘贴()调用。

第二版,基本上也是模块模式,返回一个对象,其成员是函数:

function operandIs(n) {
    return {
        multiply: function(arg) { return arg * n;  },
        divide:   function(arg) { return arg / 10; }
    }
}

var by10 = operandIs(10);
console.log(by10.multiply(10)); // Outputs 100
console.log(by10.divide(10));   // Outputs 1

进一步考虑:您还可以使用原型方法等返回新函数。

您只需要从函数返回对象。

function thats() {
    return { 
        how: function () {
            return {
                it: function () {
                    return {
                        works: function () {
                            console.log("that's how it works!");
                        }
                    };
                }
            };
        } 
    };
}

thats().how().it().works();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM