我有一个简单的库来选择一个元素并返回元素的对象。
(function() {
var $ = function(parameter) {
return new js(parameter);
};
var js = function(parameter) {
var selector;
selector = document.getElementById(parameter);
this = selector; // assign selector to this.
return this;
};
// Extend the library.
$.fn = js.prototype = {
hide: function() {
this.style.display = 'none';
return this;
}
};
if (!window.$) {
window.$ = $;
}
})();
当我使用它时。
HTML
<div id="box"> Hello world! </div>
的Javascript
$('box').innerHTML = "Good";
注意:我想这样做create a simple JavaScript library
阻止运行代码的问题是什么?
答案 0 :(得分:2)
您无法将内容分配给this
。抛出的错误取决于浏览器。
相反,您只需返回选择器:
var js = function(parameter) {
var selector;
selector = document.getElementById(parameter);
return selector;
};
这将覆盖用new调用的一般机制,即使你编写代码的方式也可以工作。看到你没有将这个函数用作构造函数,你也可以避免使用new:
var $ = function(parameter) {
return js(parameter);
};
答案 1 :(得分:0)
您正在将选择器分配给this
,这是无效的,并且您正在创建一个您不需要的对象。您的代码可以简化为:
(function() {
var $ = function(parameter) {
return document.getElementById(parameter);
};
if (!window.$) {
window.$ = $;
}
})();