如何在我自己的javascript命名空间中的对象构造函数中使用JQuery?

时间:2014-04-16 06:21:44

标签: javascript jquery function namespaces

我甚至无法在任何地方找到这个问题的答案,所以也许我总是咆哮错误的树......

我正在创建一个javascript命名空间,其中我正在构建一个构造函数:

var SEP=SEP||{};

SEP.person=function(name)
{
    this.name=name
    this.sayName=sayName

    function sayName()
    {
        return this.name;
        $(document).ready
        (
            function()
            {
                $('body').css('background', 'red');
            }
        );
    }
}

然后我从HTML中调用函数...

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>test</title>
<meta name="generator" content="BBEdit 10.5" />
</head>
<body>
<script src="libraries/jquery/javascript/jquery-1.11.0-min.js"></script>
<script src="libraries/sep/javascript/sep.js"></script>
<p>Hello</p>
<script>
    var bob=new SEP.person("bob");
    word=bob.sayName();
    document.write(word);
</script>
</body>
</html>

问题一,为什么这不起作用? 问题二是如何让它发挥作用? 问题三是,如果我想制作一个更具参与性的构造函数,尽管我还要使用JQuery,我是否需要一遍又一遍地完成文档准备工作,还是有更好的方法?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

实际上你的构造函数工作正常。但是您不应该在代码中使用document.write。相反,您可以使用.append() .html().text()方法将值附加到html标记。此外,sayName()方法应该稍有变化,Css应该在return之前应用。否则它不会触及那些代码行。

var SEP = SEP || {};

SEP.person = function (name) {
    this.name = name
    this.sayName = sayName

    function sayName() {
        $('body').css('background', 'red');
        return this.name;
    }
}

var bob = new SEP.person("bob");
word = bob.sayName();
$("span").text(word);

Demo