gpt4 book ai didi

javascript - 如何传递 JS 对象的方法?

转载 作者:搜寻专家 更新时间:2023-11-01 04:37:34 24 4
gpt4 key购买 nike

当将对象方法作为函数参数传递时,我必须使用“绑定(bind)”来确保方法的上下文 (this) 设置正确。然后我的代码中有很多绑定(bind)...这是编写 JS 代码的干净方法吗?传递方法的推荐设计模式是什么?也许我应该传递整个对象,或者重新设计我的对象?

谢谢。

为了您的引用,我在这里粘贴了我的代码。这绝对不是一个好的代码。例如,我可能想使用多条 sql 语句而不是一条一条地调用它们。

function insertDB(response, postData) {
var mysql = require('mysql');
var async = require('async');
var connection = mysql.createConnection({
host : 'localhost',
user : 'user',
password : 'pswd',
database : 'mydb',
});

async.series([
connection.connect.bind(connection),
async.apply(connection.query.bind(connection),
"CREATE TABLE IF NOT EXISTS concepts ("+
"name VARCHAR(64) NOT NULL,"+
"priority INT NOT NULL DEFAULT 0,"+
"date DATE NOT NULL,"+
"notes VARCHAR(256),"+
"PRIMARY KEY (name))"),
async.apply(connection.query.bind(connection),
"INSERT INTO concepts VALUES('" +
postData["word"] + "',0,CURDATE(),'')"),
connection.end.bind(connection)
],
function(err, result) {
if (err) console.error(err);
});
}

最佳答案

您可以使用 call 或 apply 来执行此操作,它们都允许您设置范围并传递您想要的任何参数。 call 和 apply 之间的区别在于 call 采用逗号分隔的参数,例如:

connection.connect.call(connection, arg1, arg2, arg2);

apply 采用这样的参数数组:

var args = [arg1, arg2, arg3];
connection.connect.apply(connection, args);

关于javascript - 如何传递 JS 对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17520378/

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