我们如何在以下代码中避免使用原型?
var a = (function(){return {
hello : function(){
console.log('say hello ' + jello() );
},
jello : function(){
return 'asked for jello';
}
};
}
)();
a.hello();
未捕获的ReferenceError:未定义jello(...)
答案 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();