代码如下:consthttp=require('http');constserver=http.createServer((req,res)=>{letr=Object.create(res);r.write('HHHHH');r.end('OK');});server.listen(5000,function(){console.log('Apprunning!');});之后发送请求就没有有响应了,而且:console.log(r.write);console.log(res.write);是一样的结果,r.write===res.write也为true。try{leto=Object.create(res);o.end('132','utf-8',()=>{console.log('ok,end')});res.write('123456');res.end('ok')}catch(e){console.error('Error:',e.message);}response的结果是123456ok,然后打出了‘ok,end’.
2 回答

米脂
TA贡献1836条经验 获得超3个赞
其实我觉得这是个适合初学者的好问题,不过你没表述清楚你的意思是o和res的方法明明一样,为什么o却不能做res的事情这里要理解一个概念,js里的函数传参,如果传的是对象,那么传的就是对象的引用(地址),比如functionadd(array){array.push(4)}letarr=[1,2,3]add(arr)console.log(arr)//1,2,3,4也就是说,你写在createServer函数里的这个res,是调用的人传给你的,你的res怎么变,外面的res也跟着变,这就比传统的return赋值方便的多。你现在建了一个新的对象o,在上面调用再多方法也是没有用的,因为调用你的人不知道你在里面干啥,他只关注传给你的那个res怎么变,结果你复制了个新的对象,没管res,res没变,服务器自然也没有反应。
添加回答
举报
0/150
提交
取消