Javascript 为什么我不能直接访问jLib.method()?

Javascript 为什么我不能直接访问jLib.method()?,javascript,prototype,instance,anonymous-function,Javascript,Prototype,Instance,Anonymous Function,这是我的第一个问题 我将使用类似jQuery的语法开发自己的javascript库。 我写了这段代码: (function(window) { // Returns new instance var jLib = function( args ) { return new MyLib(args); }; var MyLib = function( args ) { // [...] /* This runs perfectly *

这是我的第一个问题

我将使用类似jQuery的语法开发自己的javascript库。 我写了这段代码:

(function(window)
{
    // Returns new instance
    var jLib = function( args ) { return new MyLib(args); };

    var MyLib = function( args )
    {
        // [...]
        /* This runs perfectly */

        return this;
    };

    /* I can't understand why jLib.byId() is undefined! */
    MyLib.lib = MyLib.prototype = {
        byId: function( id ) { return MyLib("#" + id); },

        /** Other code **/
    };

  // Add it to the window object
  if(!window.jLib) window.jLib = jLib;
})(window);
但是如果我尝试运行jLib.byId,它抛出的undefined不是一个函数


您能解释一下原因吗?

jLib是一个函数。它没有byId属性。你想要jLib.byId。您需要调用jLib并获取它返回的新MyLib对象。另外,你不需要归还这个;在MyLib函数“”中。所以我必须为jLib设置一个byId函数。。。我不能为两者设置相同的原型吗?如果您希望能够执行jLib.byId,则需要在jLib函数上设置byId属性。设置jLib的原型只有在您使用新的jLib时才有帮助。你到底想怎么称呼byId?为什么你们同时拥有MyLib和jLib?我遵循这个指南,其中的库是MyLib:我希望能够调用jLib.byidideyah,这可能有用。它所做的只是复制方法: