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