1

こんにちは私は誰かがここで私を助けてくれることを望んでいます:)私はjQueryに似た方法でライブラリをセットアップしようとしています。これが私がこれまでに持っているものです。

/*!
 * Sentinal Javascript Library V1.0.0
 * http://sentinal.com
 *
 * Depends on jQuery v1.9.1
 *
 * Copyright 2013 Sentinal Team and other contributors
 * Released under license
 * http://sentinal.com/license
 *
 * Date 25-3-2013
 */ 
(function ( window, location, $, undefined ){

// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
// you try to trace through "use strict" call chains. (#13335)
// Support: Firefox 18+
//"use strict";
var 
    // A central reference to the root Sentinal(document)
    rootSentinal,

    // Use the correct document accordingly with window argument (sandbox)
    document = window.document,
    location = window.location,

    // Map over Sentinal in case of overwrite   
    _Sentinal = window.Sentinal,

    // Map over the $S alias in case of overwrite (Namespace alias for Sentinal)
    _$S = window.$S,

    // Version of this library 
    core_version = "1.0.0",

    // Define a local copy of Sentinal
    Sentinal = function() {
        // The Sentinal object is actually just the init constructor 'enhanced'
        return new Sentinal.fn.init();
    };

    Sentinal.fn = Sentinal.prototype = {
        // The current version of Sentinal being used
        Sentinal: core_version,

        constructor: Sentinal,

        init: function (){
                $(document).ready(function(){
                $('body').append('<h1>It Works!</h1>');
                console.log( "Sentinal Version is reporting : " + $S.fn.version() );
            });
        },

        version: function (){
            return core_version;
        },

        render: function (){

        },

        send: function () {

        },

        recieve: function () {

        }

    };



    // Give the init function the jQuery prototype for later instantiation
    Sentinal.fn.init.prototype = Sentinal.fn;

    window.Sentinal = window.$S = Sentinal;

})( window, location, jQuery );

私が今抱えている問題は、ライブラリが$(document).readyを認識していないことに関係しています。または、スコープの問題がありますが、jQueryが含まれているinitメソッドは、ドキュメントの本文にhtmlを追加せず、console.logも機能しません。

どんな情報でも大いに受け取られます:)

4

1 に答える 1

0

匿名関数は常に実行されるとは限りません。それらには、渡される(またはargumentsオブジェクトを介してアクセスされる)関数によって名前が付けられます。

問題は、init関数を呼び出さないことです。つまり、$(document).ready()関数が呼び出されることはなく、匿名関数がドキュメントのreadyイベントにアタッチされることはありません。

init関数を完全に削除し、次のようにコードの最後に$(document).ready()を呼び出してみてください。

. . .  

window.Sentinal = window.$S = Sentinal;

$(document).ready(function(){
            $('body').append('<h1>It Works!</h1>');
            console.log( "Sentinal Version is reporting : " + $S.fn.version() );
        });

// Give the init function the jQuery prototype for later instantiation
Sentinal.fn.init.prototype = Sentinal.fn;

})( window, location, jQuery );

または、次のようにinit関数をすぐに呼び出すことができます。

        init: function (){
            $(document).ready(function(){
            $('body').append('<h1>It Works!</h1>');
            console.log( "Sentinal Version is reporting : " + $S.fn.version() );
        });
    }(); // call the function immediately,

また、ウィンドウオブジェクトはグローバルオブジェクトであるため、どこからでもどこからでもアクセスできるため、プラグインにウィンドウオブジェクトを渡す必要はありません。

于 2013-03-25T16:50:40.747 に答える