1

在我正在构建的 CMS 中,我想拥有自己的 javascript 命名空间对象$cms。这个对象应该有一个方法/函数hasIdentity来返回用户是否登录的状态。

有没有一种方法可以让这个方法/函数返回状态而不必求助于:

  • AJAX
  • 全局变量
  • 或从 PHP 中重写以下脚本

这就是我所拥有的:

var $cms = {
    hasIdentity: function()
    {
        return /* the status provided by PHP */;
    }
};

这可能有点审美问题,但我不想诉诸于此:

// write this global var;
var $isLoggedIn = false;

var $cms = {
    hasIdentity: function()
    {
        return $isLoggedIn;
    }
};

或这个:

var $cms = {
    hasIdentity: function()
    {
        $isLoggedIn = this.do.some.ajax.call();
        return $isLoggedIn;
    }
};

我可能更多地考虑一种 OOP 方法,比如$cms通过在 PHP 中编写对象来构造对象:

<script type="text/javascript">
  $cms = new $cms( <?php echo $loggedIn ? 'true', 'false' ?> );
</script>

现在,我相信我不能new在 Javascript 中使用这样的关键字,但我希望你能明白我的意思,看看我想用这个去哪里。

4

2 回答 2

3

你也可以这样做:

$cms.isLoggedIn = <?php echo $loggedIn ? 'true', 'false' ?>;

那是因为您的 $cms 对象不是构造函数。如果是的话,你本来可以的new

var CMS = function (loggedIn) {
    this.loggedIn = loggedIn;
};

CMS.prototype.hasIdentity = function () {
    return this.loggedIn;
};

$cms = new CMS(<?php echo $loggedIn ? 'true', 'false' ?>);
于 2010-02-23T09:10:41.343 回答
0

你可以使用cookie。hasIdentity当用户登录并让方法读取 cookie 并返回它的状态时,从 PHP 设置它。这不是最安全的解决方案,因为 cookie 可以被伪造,但无论如何您也要检查服务器端的所有内容,对吧?:)

于 2010-02-23T09:03:38.080 回答