在javascript类中没有在运行时设置的属性

时间:2015-10-13 11:56:20

标签: javascript

这是我第一次尝试使用javascript创建具有函数和属性的类,但我无法理解为什么在我的代码中ShowValue函数返回默认值而不是调用之前的那个值。

<script type="text/javascript">
    var $mylocalclass;

    $(document).ready(function () {
        $mylocalclass = myclass;
        $mylocalclass.mypropname = "the_name_i_want_here";
    });

    var myclass = (function () {
        var mypropname = "unspecified_name";

        var ShowValue = function () {
            alert(mypropname);
        };

        return {
            ShowValue: ShowValue,
            properties:{
                mypropname: mypropname
            }
        }
    })();
</script>

<button type="button" onclick="$mylocalclass.ShowValue();">Try Me!</button>

我想要做的是在不同的页面中使用相同的类,但根据本地属性的名称使用它,在本例中,本地属性的名称是本地存储对象的键。当然,如果我无法从页面设置属性,这将无法正常工作。

1 个答案:

答案 0 :(得分:0)

您正在访问该函数中的私有变量mypropname。要访问您设置的变量,请使用this

此外,您有3个mypropname变量,其中2个未使用。在

var mypropname = "unspecified_name";

只是您在ShowValue回调中使用的私有变量,而properties变量中设置的变量并未在其他任何位置引用。

最后,这不是对象(或类)的实例,而是对象本身。

&#13;
&#13;
var $mylocalclass;

    $(document).ready(function () {
        $mylocalclass = myclass;
        $mylocalclass.properties.mypropname = "the_name_i_want_here";
    });

    var myclass = (function () {
        var mypropname = "unspecified_name";

        var ShowValue = function () {
            alert(this.properties.mypropname);
        };

        return {
            ShowValue: ShowValue,
            properties:{
                mypropname: mypropname
            }
        }
    })();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<button type="button" onclick="$mylocalclass.ShowValue();">Try Me!</button>
&#13;
&#13;
&#13;