首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"this“不返回选择器。

"this“不返回选择器。
EN

Stack Overflow用户
提问于 2014-02-08 13:37:26
回答 2查看 54关注 0票数 1

我有一个简单的库来选择一个元素并返回元素的对象。

代码语言:javascript
复制
(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.$ = $;
    }
})();

当我使用它时。

代码语言:javascript
复制
<div id="box"> Hello world! </div>

Javascript

代码语言:javascript
复制
$('box').innerHTML = "Good";

注意:我想像这样做创建一个简单的JavaScript库

阻止运行代码的问题是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-02-08 13:39:57

您不能为this分配东西。引发的错误取决于浏览器。

相反,只需返回选择器:

代码语言:javascript
复制
var js = function(parameter) {
    var selector;
    selector = document.getElementById(parameter);

    return selector;
};

这将覆盖使用new调用的一般机制,甚至可以使用您编写代码的方式。考虑到如何不将该函数用作构造函数,还可以避免使用新的:

代码语言:javascript
复制
var $ = function(parameter) {
    return js(parameter);
};
票数 2
EN

Stack Overflow用户

发布于 2014-02-08 13:42:50

您将选择器分配给this,这是无效的,您正在创建一个不需要的对象。您的代码可以简化如下:

代码语言:javascript
复制
(function() {
    var $ = function(parameter) {

        return document.getElementById(parameter);
    };

    if (!window.$) {
        window.$ = $;
    }
})();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21646666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档