返回Javascript构造函数的属性

时间:2015-04-22 15:43:32

标签: javascript object properties

我正在尝试解决我有以下代码的问题:

var piggie = new Animal(Animal.PIG);

构造函数(new Animal)如何也可以是具有属性的对象(Animal.PIG)?

我尝试过这个解决方案:

function Animal(type) {
    this.typeOf = type;

    return {
        PIG: 'Pig'   
    };
}

但是Animal.PIG未定义? JS Fiddle在这里:http://jsfiddle.net/bufr2b4c/

2 个答案:

答案 0 :(得分:1)

要使Animal.PIG具有值,您必须在构造函数本身上创建一个属性。

function Animal(type) {
    this.typeOf = type;
}

Animal.PIG = "Pig";

当构造函数运行并在 对象上设置PIG时,您的代码正在创建一个对象。 (并在你去的时候丢弃构造的Animal实例)。

答案 1 :(得分:0)

您执行console.log((new Animal).PIG); //It's done!因为您正在访问对象的属性(您需要创建此对象。因此您需要使用

function Animal(type) {
    this.typeOf = type;

    return {
        PIG: 'Pig'   
    };
}

console.log(new Animal);
console.log((new Animal).PIG); //this is undefined, but why?

console.log(typeof Animal);             // "function"
console.log(Animal instanceof Object);  // true

EDITED

您可以使用以下内容:

function Color(col) {   
   this.color = col;
   this.getColor = function() {
       return this.color;
   }
}

var blueBox = new Color("blue");
alert(blueBox.getColor()); // will alert blue
alert(blueBox.color); // will alert blue