> Le 16 janv. 2017 à 18:00, Michael Haufe <[email protected]> a écrit :
> 
> The question came up recently on CLJS [1] on how to determine if an object is 
> safe to call as a Constructor.

The two following procedures will determine whether an object is a constructor 
without running it, according to ES6. (Whether it is safe to call it as 
constructor... you need first a definition of "safe".)

(1) Using `class/extends`:

```js
function isConstructor1(f) {
    if (f === null)
        return false
    try {
        class c extends f { }
        return true
    }
    catch (e) {
       return false
    }
}
```

(2) Using `Proxy`:

```js
function isConstructor2(f) {
    var p = new Proxy(f, { construct() { return {} } })
    try {
        new p
        return true
    }
    catch (e) {
       return false
    }
}
```


—Claude

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to