Javascript原型定向编程疑惑

时间:2013-04-27 09:53:11

标签: javascript

我想在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"});

2 个答案:

答案 0 :(得分:0)

只需从C();

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

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

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

答案 1 :(得分:0)

干净的方式是:

var A = function() { };

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

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

你正在做的和你之间的区别在于,在你的情况下,当你在对象的“构造函数”中时创建和添加方法,而使用这种方法,在你进入之前它们已经是对象的属性它的“构造函数”,只解析一次(当你将它们添加到原型时),而不是每次创建一个新实例时都被解析,这更快。

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

var A = function() {
    // this scope is what i mean by "constructor".
};