我有一个简单的库来选择一个元素并返回元素的对象。
(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.$ = $;
}
})();当我使用它时。
<div id="box"> Hello world! </div>Javascript
$('box').innerHTML = "Good";注意:我想像这样做创建一个简单的JavaScript库
阻止运行代码的问题是什么?
发布于 2014-02-08 13:39:57
您不能为this分配东西。引发的错误取决于浏览器。
相反,只需返回选择器:
var js = function(parameter) {
var selector;
selector = document.getElementById(parameter);
return selector;
};这将覆盖使用new调用的一般机制,甚至可以使用您编写代码的方式。考虑到如何不将该函数用作构造函数,还可以避免使用新的:
var $ = function(parameter) {
return js(parameter);
};发布于 2014-02-08 13:42:50
您将选择器分配给this,这是无效的,您正在创建一个不需要的对象。您的代码可以简化如下:
(function() {
var $ = function(parameter) {
return document.getElementById(parameter);
};
if (!window.$) {
window.$ = $;
}
})();https://stackoverflow.com/questions/21646666
复制相似问题