【问题标题】:Javascript create object structureJavascript创建对象结构
【发布时间】:2016-01-20 22:14:36
【问题描述】:

我以前写了很多 Javascript,现在我只是跳回它,但似乎我失去了理智。我正在尝试使用函数创建一个对象,并且我正在按照我的在线搜索建议我应该做的方式来做这件事。我创建了这个例子来展示我尝试过的许多方法。

<script>
function a(){
    function b(){};
    this.c = function(){};
    this.d = 0;
    var e = function(){};
    var f = 0;
}
a.g = function(){};
a.prototype.h = function(){};

var a2 = function(){
    function b(){};
    this.c = function(){};
    this.d = 0;
    var e = function(){};
    var f = 0;
}
a2.g = function(){};
a2.prototype.h = function(){};
</script> 

据我的记忆,我应该可以调用 a.b()a.c()a.d,同样可以调用 a2。

但是,当我尝试给他们打电话时,它不起作用。当我在控制台中键入变量名称时,它甚至没有将它们显示为一个选项。但是我可以调用 a.g()。我不能调用 a.h(),但我可以调用 a.prototype.h()

我在 chrome 中尝试过这个,在 Firefox 和 Safari 中也尝试了一些东西。

据我从在线教程中得知,这并不是我应该期待的交互方式。

【问题讨论】:

    标签: javascript object closures


    【解决方案1】:

    bef 是函数a 范围内的变量。它们永远不会暴露在该函数之外。

    cd 被分配, a 被调用,无论this 是什么。如果您调用 new a(),那么它将是返回的 a 的实例。

    ga的一个属性,直接调用即可。

    h 在原型链上,因此它会像cd 一样出现在使用new 创建的a 实例上。

    【讨论】:

    • 好的,谢谢。我想我错过了“新”关键字。现在说得通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多