Can I construct a JavaScript object without using the new keyword?

后端 未结 15 2796
北海茫月
北海茫月 2020-11-27 16:04

Here is what I\'d like to do:

function a() {
  // ...
}
function b() {
  //  Some magic, return a new object.
}
var c = b();

c instanceof b // -> true
c          


        
15条回答
  •  自闭症患者
    2020-11-27 17:04

    You can't avoid new in the general case (without going to extremes, as per the Crockford article Zoidberg indirectly linked to) if you want inheritance and instanceof to work, but then (again), why would you want or need to?

    The only reason I can think of where you'd want to avoid it is if you're trying to pass a constructor function to another piece of code that doesn't know it's a constructor. In that case, just wrap it up in a factory function:

    function b() {
        // ...
    }
    function makeB() {
        return new b();
    }
    var c = makeB();
    

提交回复
热议问题