1

古いJavaScriptファイルの1つをrequireJSと互換性があるように移植しています。これは以前のコードの外観です。

// effect.js
(function(exports){

    // shorthand
    exports.effect = function(selector) {
        return new Effect(selector);
    };

    // init
    exports.Effect = function(selector){
        this.target = document.getElementById(selector);        
    };

    Effect.prototype.run = function(){
        alert('halo');
    };
})(this);

//invoke it with
effect('box').run();

requireJSと互換性を持たせようとしました:

// effect.js
define(function(exports){   
    // Shorthand
    exports.effect = function(selector) {
        return new Effect(selector);
    };

    // init
    exports.Effect = function(selector){
        alert('halo');
        this.target = document.getElementById(selector);        
    };

    Effect.prototype.run = function(){
        alert('halo');
    };      
}

// require js
require([
    'effect.js'
],function(Effect){
    effect('box').run();
})

上記のコードは実行されません。effect('box').run() の省略形を実行するだけで同じ結果を得るにはどうすればよいですか。

4

1 に答える 1

2

これを試してください:

define(function() {

    // init
    var Effect = function(selector) {
        this.target = document.getElementById(selector);
    };

    Effect.prototype.run = function(){
        alert('halo');
    };

    // Replaces the 'shorthand' function from the first example 
    // This is returned as a module to the require call
    return function(selector) {
        return new Effect(selector);
    }

});

require(['effect.js'], function(effect) {
    effect('box').run();
});
于 2012-04-30T12:34:35.377 に答える