-4

我想在 Javascript 中执行以下操作

function A(){
    this.B = function() { ... };
    this.C  = function() { <<I need to call B() here>> } ; 
};

看过下面的方法重载方式,但想知道专业的程序员会不会这样做。即,如果您只是将其作为练习或实验来执行,或者实际上会在生产代码中执行此操作。

function foo(a, b, opts) {
};
foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});
4

2 回答 2

0

只需从 C() 内部调用 B();

function A(){
    B = function() {
         // Do something here
    }
    C = function() { B(); }
};

或者,如果您只想创建一个别名

function A(){
    B = function() {
         // Do something here
    }
    C = B
};
于 2013-04-27T10:08:45.877 回答
0

干净的方法是:

var A = function() { };

A.prototype.B = function() { };
A.prototype.C = function() { this.B(); };

原型只是在您创建的每个新实例中克隆的一组静态属性。

您正在做的事情与 this 之间的区别在于,在您的情况下,方法是在您处于对象的“构造函数”时创建和添加的,而使用此方法,它们在您输入对象的“构造函数”之前已经是对象的属性",并且只解析一次(当您将它们添加到原型时),而不是每次创建新实例时都解析,这样更快。

我想,如果我错了,请纠正我。

var A = function() {
    // this scope is what i mean by "constructor".
};
于 2013-04-27T10:16:30.443 回答