在下面的代码段中,我正在尝试访问YUI块内的testFunction()
。
这样做的正确方法是什么?
var obj = YUI().use('node', 'event', 'io-base', 'json-parse', function(Y){
function testFunction() {
console.log('Inside Function');
}
});
obj.testFunction();
答案 0 :(得分:1)
您的代码目前无法正常工作,原因有两个:
首先,你声明的testFunction函数不可见。将代码更改为
var obj = YUI().use('node', 'event', 'io-base', 'json-parse', function(Y){
Y.testFunction = function() {
console.log('Inside Function');
}
});
修复了那部分内容。传递给你的函数的Y将从YUI.use()返回,所以将它赋给Y使它可见。
第二个问题是对obj.testFunction()的调用将在YUI加载你需要的模块之前发生,所以在这一点上,obj(YUI的一个实例)将不会有一个testFunction。如果你上面的代码更改,你将能够在浏览器控制台中调用obj.testFunction(),因为它已被该点加载。
最好的办法是将testFunction放入一个模块中,然后在以后的代码中使用该模块:
YUI.add('testFunction', function (Y) {
Y.testFunction = function() {
console.log('Inside Function');
};
}, '1.0.0', {
requires: ['node', 'event', 'io-base', 'json-parse']
});
var obj = YUI().use('testFunction', function(Y){
Y.testFunction();
});