gpt4 book ai didi

javascript - 这是将属性分配给对象的有效方法吗?

转载 作者:行者123 更新时间:2023-11-30 05:48:08 26 4
gpt4 key购买 nike

这是将属性分配给对象的有效方法吗?我有一个 if/else 语句,我希望它确定 pi 的属性。

function game(){
var self = this;

this.determineDifficulty = function(){
var difSet = document.getElementById("dif");
var chosen = difSet.options[difSet.selectedIndex].value;

if(chosen === "Easy"){
var d = 0;
self.p = 1;
self.i = 1000;
}else if(chosen === "Medium"){
var d = 1;
self.p = 0.1;
self.i = 100;
}else{
var d = 2;
self.p = 0.01;
self.i = 10;
}
return d;
}
}

var myGame = new game();

如果我提醒 myGame.p,它会给我正确的值。但这是好的做法吗?据我了解,如果我想要一个可以在多种方法中使用的变量——我应该将其分配为对象的属性。另一种选择是返回 this is a regular variable。如果这是正确的?

最佳答案

您可以使用 determineDifficulty 中的 this 引用来执行对象属性分配,而不是使用复制变量。请注意,这是有效的,因为您将 determineDifficulty 作为游戏的对象属性。如果您在“game()”中将其声明为内联函数,则 this 将引用内联函数,而不是游戏。

但是,请注意,将所有构造函数大写是一种很好的做法。所以应该是 function Game() 而不是 function game()

编辑:

您可以像我说的那样直接将属性值赋给对象。但是,如果您将 determineDifficulty 设置为回调函数,则 this 将不会引用您需要的对象。

//For Example:

function Obj() {
this.foo = 5;
this.set_foo = function() {this.foo = 10; }
}

var obj = new Obj();
alert(this.foo); //5
obj.set_foo();
alert(this.foo); //10

//The Following will not work
element.onclick = obj.set_foo;

单击元素时,this 将引用元素而不是 obj

关于javascript - 这是将属性分配给对象的有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591139/

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