我对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
错误。谢谢你的帮助!
答案 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);