JavaScript函数原型替代品

时间:2015-12-05 00:30:10

标签: javascript

我们如何在以下代码中避免使用原型?

var a = (function(){return { 
               hello : function(){
                           console.log('say hello ' + jello() );
                }, 
                jello : function(){
                          return 'asked for jello';
                }
            };
        }
 )();
 a.hello();

未捕获的ReferenceError:未定义jello(...)

2 个答案:

答案 0 :(得分:2)

您尚未将jello定义为全局范围内的函数,仅作为您正在创建的对象的属性,因此您需要帮助指定在何处找到它:而不是仅仅调用{{ 1}},您需要致电jello()

this.jello()

答案 1 :(得分:1)

如果您不喜欢使用this(因为后期绑定或其他),您也可以这样写:

var a = (function() {

    function hello() {
        console.log('say hello ' + jello());
    }

    function jello() {
        return 'asked for jello';
    }

    return {
        hello: hello 
        jello: jello
    };
})();
a.hello();

在不使用this的情况下执行相同操作的另一种方法是使用绑定变量:

var a = (function() {
    var api;
    api = { 
        hello : function() {
            console.log('say hello ' + api.jello() );
        }, 
        jello : function() {
            return 'asked for jello';
        }
    };
    return api;
})();
a.hello();