答案 0 :(得分:2)
为什么不简单地包装introJs提供的工厂并在包装器中调用它?
您可以使用此类内容(未经测试)在外部执行此操作:
var introJsWrapper = function(targetElm) {
var ijs = introJs(targetElm);
ijs.start();
return ijs;
};
或者你可以通过将它作为主函数的属性公开来在introJs代码的一个fork中执行它,例如:
var introJs = function (targetElm) {
if (typeof (targetElm) === 'object') {
// ...
}
introJs.autoStart = function(targetElm) {
var ijs = introJs(targetElm);
ijs.start();
return ijs;
};
请注意,在introJs中,main函数只是一个非常薄的参数测试/更改包装器,已经在内部构造函数周围。调用它会间接调用构造函数。因此,就我所见,实际上没有必要直接访问这个内部构造函数。
答案 1 :(得分:1)
嗯,这应该是它。我假设这些都包含在一个闭包中,因为代码似乎意味着有一些内部函数在继续。这就是我收集的内容。这不是一个完整的实现,因为我不知道调用this
时new IntroJS
如何在构造函数中使用。我所知道的是你的原型函数在某些属性上运行。
//internal functions
function _mergeOptions(target){/*implementation*/}
function _introForElement(el){/*implementation*/}
function _goToStep(step){/*implementation*/}
function _exitIntro(target){/*implementation*/}
function _setHelperLayerPosition(nodeList){/*implementation*/}
//constructor
function IntroJs(first){
this._options = {};
this._introChangeCallback;
this._introCompleteCallback;
this._introExitCallback;
}
答案 2 :(得分:0)
只需一个空构造函数即可。正如Jan所说,这很没用,但如果你喜欢这个符号......
答案 3 :(得分:0)
好的,基本上这解决了我的问题:
introJs.fn = IntroJs.prototype = {
...
initialize: function() {
return this;
}
...
}
现在,调用introJs().initialize()
会在不调用start()
方法的情况下为我提供库。