猿问

请各位大佬指点!Object.create()创建的对象使用原型上的方法无效

代码如下:
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的结果是

123456

ok

,然后打出了‘ok,end’.
GCT1015
浏览 506回答 2
2回答

米脂

其实我觉得这是个适合初学者的好问题,不过你没表述清楚你的意思是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没变,服务器自然也没有反应。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答