请教:new 的疑问
发布于 12 年前 作者 philsong 4245 次浏览 最后一次编辑是 8 年前

请教:var mysql = new require(‘mysql’);var express = require(‘express’)为什么require mysql需要new出来,而express不需要呢?

5 回复

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.

回到顶部