-5

我正在看这样的东西:

function Lab = {
    minseat: function(){
        var seat = 10;
        return seat;
    },


    maxseat: function(){
        var seat = 50;
        return seat;
    }

 }

问题是因为下面的代码只会在运行时运行,因此代码的位置变得非常重要,因为我需要将它们放在Lab.minseat()调用它的代码行(例如)之上。

var Lab = {
    minseat: function(){
        var seat = 10;
        return seat;
    }


    maxseat: function(){
        var seat = 50;
        return seat;
    }

 }

是的,我知道这个问题很愚蠢,很可能会吸引反对票,但我只想知道这是否可能?

4

2 回答 2

4

您正在尝试使用像文字这样的函数。

在 javascript 中有一种叫做文字的东西,它的工作原理与此完全一样,是的,它可以有多个。它的语法是这样的:

var foo = {
    bar: functon(){},
    foobar: function(){}
}

您可以像这样调用这些函数

foo.bar();
foo.foobar();

如果您希望函数具有可以在函数外部调用的函数,则可以使用原型关键字:

function foo(){};
foo.prototype.bar = function(){};

你可以像这样调用这些函数

var f = new foo();
f.bar();

或者你可以使用 this 关键字

function foo(){
    this.bar = function(){};
}

你可以这样称呼

var f = new foo();
f.bar();

或者,如果您只打算使用该函数中的函数,则可以使用 var 关键字

function foo(){
    var bar = function(){};
}

您可以像这样在函数内部调用它

bar();

如果您曾经使用类进行过 OO 编程,那么解释起来可能会更容易一些。

将函数视为一个类。它有公共和私有成员和函数,在函数内部你可以指定这些,当使用var关键字时将这些视为私有成员和函数,当使用this关键字时将这些视为公共成员,prototype成员的工作方式也非常相似this但是我仍然没有研究有什么区别。

使用var,thisprototype函数时,这些都是non static面向对象编程的术语。它需要一个对象引用。

这是因为分配是在您调用函数或创建它的新实例时完成的

new foo()调用与调用之间存在差异,调用foo()foo()您会返回函数返回的内容,但调用new foo()时会返回该对象的实例。

因此,要引用您的公共成员,foo您需要创建它的新实例

只是有点想涵盖这一切。xD

于 2013-05-03T03:18:18.713 回答
3

是的,但是您的语法无效。

这是对象声明语法:

var obj = {
    member: value,
    anotherMember: value
};

这是函数语法,只是常规语法:

function() {
    // these are just regular statements
    // no colons, no commas

    function regularFunction() {
        // ...
    };

    var anonymousFunction = function() {
        // ...
    };
}

您正在混合和匹配两者,但解析不正确。

于 2013-05-03T03:18:33.463 回答