请教:var mysql = new require(‘mysql’);var express = require(‘express’)为什么require mysql需要new出来,而express不需要呢?
mysql 不是这样new 的, 你一定是看错了!正确的new法: var client = new require(‘mysql’).Client({/这里是服务器连接配置/}); // 只是new了一个Client, 不是new mysql
没看错 var mysql = new require(‘mysql’), db = null; if(mysql.createClient) { console.log(“mysql.createClient”); db = mysql.createClient(db_options); } else { console.log(“mysql.Client(db_options)”); db = new mysql.Client(db_options); db.connect(function(err) { if(err) { console.error('connect db ’ + db.host + ’ error: ’ + err); process.exit(); } }); }
JS中的函数有多种调用方式,包括方法调用和new。 函数作为方法调用时,其this指向方法所属的对象,在函数中可访问所属对象的其它属性。 使用new创建实例时,其this指向函数对象本身,在函数中同样可访问该函数对象的其它属性,但不同实例的同名属性值是不一样的。
var client = require('mysql').createClient({'host':'localhost',
'port':3306,
'user':'root',
'password':'123456'}),
现在可以不用new了
thanks, i think your answer makes sense.