0
function Fruits() {

    this.Banana = function() {

        this.getColor = function(){
            return 'yellow';
        };

    };

    this.Apple= function() {

        this.getColor = function(){
            return 'red';
        };

    };
}

var apple = new Fruits.Apple();
console.log(apple.getColor());

这不起作用。我在这里错过了什么?这是对具有嵌套方法的“类”的错误方法吗?

谢谢

4

4 回答 4

1

尝试使用:

var apple = new Fruits();
apple.Apple();
console.log(apple.getColor());
于 2012-08-11T13:46:52.960 回答
1

您需要先实例化 Fruits。从我的控制台...

var f = new Fruits()
undefined
new f.Apple()
Fruits.Apple
new f.Apple().getColor()
"red"
于 2012-08-11T13:47:50.343 回答
1

这是静态属性和实例属性之间的区别。当您将 Apple 声明为 Fruits 的实例属性时,您必须实例化一个 Fruit 才能实例化一个苹果,Apple 的 cronstructor 将是 Fruit 的一个方法。如果你想要静态类,你必须这样做

function Fruits() {

}; Fruits.Apple=函数(){

    this.getColor = function(){
        return 'red';
    };

}; 
于 2012-08-11T13:48:16.787 回答
1

一些好奇:

var a = new new Fruits().Apple

顺便提一句。也许您想创建一个类似静态类的东西?

var Fruits = {
    Apple:function() {

        this.getColor = function(){
            return 'red';
        };

    },
    Banana: function() {

        this.getColor = function(){
            return 'yellow';
        };
    }
}

然后它会工作。

var apple = new Fruits.Apple();
console.log(apple.getColor());
于 2012-08-11T13:50:27.143 回答