这是将属性分配给对象的有效方法吗?
Is this a valid way to assign properties to an object?
这是一个有效的方式来分配属性的对象?我有一个if/else语句,我想让它确定p和 I 的属性是什么。
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一个常规变量。如果这是正确的?
您可以使用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
。
相关文章:
- 在jQuery中创建向下滑动子菜单的最有效方法
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 将javascript数组中的项移动到特定位置的有效方法
- 将JS对象数组转换为嵌套形式的最有效方法
- 隐藏具有特定类$.each、for等的元素的有效方法
- 什么's是调用具有可变参数的函数的有效方法
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 使用 jQuery 调用 PHP 端点的最有效方法
- 这是解析 Int 的有效方法吗?
- 在JavaScript中搜索数组映射的最有效方法
- 获取字符串中最后一个换行符的最有效方法是什么
- 什么's是在两个(或多个)阵列中找到匹配的细胞序列的最有效方法
- 什么's是在IE8+中添加元素的最有效方法
- 从任何jquery选择器字符串创建元素的最有效方法
- 在日期范围内查找丢失日期的最有效方法是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 在ASP.NET中使用JQuery UI自动完成的有效方法