Использование библиотеки (element).function() или library.function() в Javascript lib
У нас есть библиотека Javascript:
(function (global, factory) {
factory(global);
}(window , function() {
var MyLib = function(elem) {
return new MyLib.foo.init(elem);
}
MyLib.foo = {
init: function(elem) {
elem = typeof elem == 'string' ? window.document.getElementById(elem) : elem;
this[0] = elem;
return this;
},
test1: function() { // (1)
window.console.log('test1 ' + this[0].nodeName);
this[0].innerHTML = this[0].nodeName;
},
};
MyLib.foo.init.prototype = MyLib.foo;
MyLib.test2 = function() { // (2)
window.console.log('test2');
}
window.MyLib = window.ml = MyLib;
}));
function outerFunc(elem) {
ml(elem).test1();
ml.test2();
}
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<script type="text/javascript" src="example.js"></script>
<div onclick="outerFunc(this)">button</div>
</body>
</html>
Когда мы должны создавать функции вроде (1), а когда (2)?
Конечно, если ему нужно получить элемент, мы всегда будем использовать (1), как MyLib(). MyFunc(), я прав?
И для всех ситуаций, когда элемент не затрагивается, мы должны создать (2), например, MyLib.myFunc()?
Может быть, мы что-то упустили с защитой переменных?