JavaScript中的高效方法
Efficient Method in JavaScript
如何在JavaScript中多次使用一个方法而不重复创建另一个方法?因为我做的是用相同的字段和代码做了一个方法唯一不同的是id。每个方法都需要一个参数,即id。
function enemyGet() {
new enemyMove2()
new enemyMove()
new enemyMove3()
}
function enemyMove2() {
var enemyimage = document.getElementById("enemy");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove2()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
function enemyMove() {
var enemyimage = document.getElementById("enemy2");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
function enemyMove3() {
var enemyimage = document.getElementById("enemy3");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove3()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
使用参数:
function enemyGet() {
// pass the id as a argument to the function
enemyMove("enemy2")
enemyMove("enemy")
enemyMove("enemy3")
}
function enemyMove(enemy) {
// the variable enemy is the id passed as an argument to the function
var enemyimage = document.getElementById(enemy);
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
// Pass the parameter in timeout as well. You have access to enemy variable due to concept of closure
var time = setTimeout(function(){enemyMove(enemy)}, 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
在这种情况下,您可以将调用之间的值变化参数化。
您可以将变化的id
作为参数传递给enemyMove
方法。
function enemyMove(id) {
var enemyimage = document.getElementById(id);
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout(function(){
enemyMove(id);
}, 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
然后function enemyGet() {
new enemyMove('enemy')
new enemyMove('enemy2')
new enemyMove('enemy3')
}
可以使用方括号来引用函数:
// Store reference to global object for use wherever
var global = this;
...
var n = 3;
// Call method based on value of n
global['enemyMove' + n]();
…
你可以让你的函数属性(方法)不是全局/window对象
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- 如何在 JavaScript 中编写高效的事件回调方法
- 使用JQuery构建选项卡,这是最高效和最有效的方法
- 用于更改列表项的内部dom元素的Javascript高效方法
- 在JavaScript中,从美元金额中提取数字的最紧凑、最高效、最可靠的方法是什么
- 使用JavaScript动态生成DOM元素的高效OOP方法
- 在JavaScript中检查字符串是否为空白(即只包含空格)的最高效方法
- 具有私有/公共方法的高效Javascript模块模式
- 寻找用javascript替换字符串的最高效的方法
- JavaScript中的高效方法
- 最高效的调用javaScript物理引擎更新循环的方法