在下面的片段中,我试图访问testFunction()
YUI 块内的内容。正确的做法是什么?
var obj = YUI().use('node', 'event', 'io-base', 'json-parse', function(Y){
function testFunction() {
console.log('Inside Function');
}
});
obj.testFunction();
在下面的片段中,我试图访问testFunction()
YUI 块内的内容。正确的做法是什么?
var obj = YUI().use('node', 'event', 'io-base', 'json-parse', function(Y){
function testFunction() {
console.log('Inside Function');
}
});
obj.testFunction();
您的代码当前无法正常工作有两个原因;
首先,您声明的 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();
});