在Javascript中,如何创建一个创建新对象的函数,然后我可以将属性作为参数传递?

时间:2017-07-01 18:22:24

标签: javascript function object

我对Javascript很陌生,在教程中我跟着它谈论创建对象和方法,但我的问题是,有没有办法让一个函数创建一个新对象,其属性是作为参数输入? 我的代码如下:

function newPet(petNumber, petName, petSpecies){
  var petNumber = new Object();
    petNumber.name = petName;
    petNumber.species = petSpecies;
};

newPet('petFour', 'Miki', 'turtle');
console.log(petFour.name);

我想相信它与范围有关,因为'petNumber'变量是在函数内部定义的,但我不确定。我也尝试替换

var petNumber = new Object();

Object.create(petName);

但它在控制台中返回了相同的petFour is not defined错误。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

Javascript有点奇怪,但函数也是对象,可以使用new关键字作为类使用。

function Pet(petNumber, petName, petSpecies){
    this.number = petNumber;
    this.name = petName;
    this.species = petSpecies;
};

var petFour = new Pet(4, 'Miki', 'turtle');

console.log(petFour.number, petFour.name, petFour.species);

我建议使用这个javascript教程来熟悉基础知识https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS

修改

误解了这个问题,但我要谈谈面向对象的Javascript。

您只需使用此语法

即可创建对象
var obj = { key1 : "value1", key2 : "value2" }

您的函数只需要返回该对象

function createPet(number, name, species){
    var pet = { number : number, name : name, species : species}
    return pet;
}
var petFour = createPet(4, "Miki", "turtle"); 
console.log(petFour)

答案 1 :(得分:0)

function createObject(val1, val2){
      var obj = {}; // object created by another way
      obj.key1 = val1;
      obj.key2 = val2;
      return obj;
}

var newObj = createObject('value1', 'value2');
console.log(newObj.key1);

您必须在函数中返回对象。

想要了解有关JavaScript的更多详细信息。

答案 2 :(得分:0)

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create

// Create a new object whose prototype is a new, empty
// object and add a single property 'p', with value 42.
o = Object.create({}, { p: { value: 42 } });

所以你想要:

function newPet(name, species) {
    return Object.create({}, {
        name: {value: name}, 
        species: {value: species} 
    });
}

let petFour = newPet('blah', 'bloo');

console.log(petFour.name);