gpt4 book ai didi

JavaScript 构造函数在定义属性时返回解析错误

转载 作者:行者123 更新时间:2023-12-03 16:45:07 29 4
gpt4 key购买 nike

我创建了一个构造函数来创建简单的视频游戏 Angular 色。构造函数将 name 作为参数并设置为属性 hName。构造的对象具有其他属性,如 speeddefaultEnergyenergyUsed 等(参见代码)。另外,我在构造函数中有两个方法,descriptionenergyLevel。我想使用 energyLevel 函数作为对 description 函数的回调。

解析错误在行 this.hName: name,

这是 JavaScript 代码:

var superHero = function (name) {
this.hName: name,
speed: 7,
defaultEnergy: 20,
energyUsed: 10,
flyAbility: true,
description: function (energyLevel) {
document.write(this.name + " has the capability to hold the hummer.");
energyLevel();
},
energyLevel = function () {
return ("<br>Current energy level is " + (this.defaultEnergy - this.energyUsed));
}
};

hero = new superHero("Thor");

document.write(hero.description());

我想要以下结果:

Thor has the capability to hold the hummer.

Current energy level is 10

我知道,不使用回调函数也可以很容易地实现。但我想用回调来实现它,因为我在项目的其余部分需要它,并且还会帮助我理解为什么回调不起作用。

最佳答案

当您调用 new Foo 时,会为您创建一个对象,并可从您的函数体内访问该对象。为了向that 对象添加属性,您可以使用关键字this:

function SuperHero ( name ) {
this.hName = name;
}

var hero = new SuperHero( "Thor" );

console.log( `Name: ${hero.hName}.` );

您可能还想将大部分内容放在函数的原型(prototype)上:

function SuperHero ( name ) {
this.hName = name;
this.energyLevels = 10;
}

SuperHero.prototype = {
energyLevel: function () {
document.write( `Current energy level is ${this.energyLevels}.` );
},
description: function ( energyLevel ) {
document.write( `${this.hName} has a description.` );
this.energyLevel();
}
};

放置在 SuperHero.prototype 对象上的项目将在 SuperHero 的所有实例之间共享

如需进一步阅读,请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new#Description .

关于JavaScript 构造函数在定义属性时返回解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351909/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com