gpt4 book ai didi

javascript - 不能在函数中使用类作为参数(JScript)

转载 作者:行者123 更新时间:2023-11-28 15:08:29 25 4
gpt4 key购买 nike

我正在尝试建立一个小型 JavaScript 实验室。在实验室中,首先我创建了一个 Animal 对象:

function Animal(species, nature) {

this.species = species;
this.nature = nature;

var preys = new Array();

Animal.prototype.getSpecies = function() {
return species;
}
Animal.prototype.getNature = function() {
return nature;
}
Animal.prototype.getPreys = function () {
return preys;
}

Animal.prototype.setNature = function (newNature) {
nature = newNature;
}
Animal.prototype.setSpecies = function (newSpecies) {
species = newSpecies;
}
Animal.prototype.setPrey = function (newPreys) {
preys = newPreys;
}
}

然后,我创建了一个 World 对象,它基本上存储了许多动物对象,并根据它们的性质将它们分开。

/// <reference path="Animal.js" />

function World() {

var animals = new Array();

animals.push(new Animal("Wolf", "Carnivore"));
animals.push(new Animal("Crocodile", "Carnivore"));
animals.push(new Animal("Sheep", "Omnivore"));

World.prototype.getOmnivores = function () {
return animals.filter(getOmnivores());
}

function getOmnivores(animal) {
}
}

在我的 getOmnivors 函数中,我无法使用 Animal 类作为变量。这对我来说有点复杂,因为我是 JavaScript 新手,无论它们的类型如何,我们都使用 var 关键字(或者在某些地方不使用,例如函数中的参数)。

我做错了什么,该如何解决?我无法访问私有(private)函数 getOmnivores 中的 Animal 类。我认为程序不明白它是名为 Animal

的类

我希望我解释得很好。祝你有美好的一天!

编辑

错误图片:Error picture :

最佳答案

Animal 是类名称,您不需要它。使用 filter 时,数组的每个元素都会自动传递给回调函数作为该函数的第一个参数。

由于数组的每个元素都是 Animal 类的实例,因此您可以立即使用它。

此外,语法 {ClassName}.Prototype.{functionName} 不应在同一类中使用,因为当解释器到达该行时,动物类尚未定义。该语法用于已经存在和定义的类。请改用 this.{functionName}

function Animal(species, nature) {

this.species = species;
this.nature = nature;
this.preys = new Array();

this.getSpecies = function() {
return this.species;
}
this.getNature = function() {
return this.nature;
}
this.getPreys = function () {
return this.preys;
}

this.setNature = function (newNature) {
this.nature = newNature;
}
this.setSpecies = function (newSpecies) {
this.species = newSpecies;
}
this.setPrey = function (newPreys) {
this.preys = newPreys;
}
}
function World() {
var animals = new Array();

animals.push(new Animal("Wolf", "Carnivore"));
animals.push(new Animal("Crocodile", "Carnivore"));
animals.push(new Animal("Sheep", "Omnivore"));

this.getOmnivores = function () {
return animals.filter(this.filterOmnivores);
}

this.filterOmnivores= function(animal) {
return animal.getNature()=='Omnivore';
}
}
myworld = new World();
console.log(myworld.getOmnivores());

一个正在工作的 fiddle https://jsfiddle.net/47dyg1q9/

关于javascript - 不能在函数中使用类作为参数(JScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805909/

25 4 0
文章推荐: html - SVG标签后div触底
文章推荐: javascript - 我的网站无法正确缩小到手机和平板电脑尺寸,我该如何解决?
文章推荐: javascript - 为什么