在javascript中返回一些值的函数上使用new?

Abh*_*hik 2 javascript

我正在尝试继承和创建对象,不知怎的,这让我很困惑.

a = function (){console.log("test"); return "hello"};
b = new a();
//console output
 test VM719:2
 a {}
Run Code Online (Sandbox Code Playgroud)

这是什么意思 ?这是否意味着b包含?如果是的话那我就这样做

console.log(b.a);
//console output 
 undefined
 undefined
Run Code Online (Sandbox Code Playgroud)

为什么会这样?其次,如果我这样做

b.__proto__
//console output 
 Object {}
a.prototype.test ="hello";
b.__proto__
//console output 
 Object {test: "hello"}
Run Code Online (Sandbox Code Playgroud)

这很好,因为新原因bs原型指向a.

console.log(b);
//console output
 a {test: "hello"}
Run Code Online (Sandbox Code Playgroud)

这个输出是什么意思?当我记录b.test它给出"你好"但是当我记录它时它给出了"未定义".那么输出控制台中a的意义是什么?

Kir*_*ill 6

如果构造函数返回nothing,null或任何原子/非对象值,则忽略所述值,并将新创建的对象引用返回给调用者.所以你在控制台中看到对象的构造函数...

  • +1用于实际解释返回值发生的情况. (2认同)