Domanda

Considerando l'esempio seguente JavaScript:

var myobj = {   func1: function() { alert(name in this) },
                func2: function() { alert(name in this) },
                func3: function() { alert(name in this) }
}

myobj.func2(); // returns true
myobj.func4(); // undefined function

E 'possibile creare una chiave 'catch-all' per myobj che andranno chiamato se non c'è una chiave / funzione definita (come in func4()), pur mantenendo il formato myobj.functionCall()?

È stato utile?

Soluzione

Siete alla ricerca di __noSuchMethod__:
getter JavaScript per tutte le proprietà

Altri suggerimenti

È possibile creare un oggetto JavaScript con 'jolly' o 'catture' tutte le chiavi usando una funzione getter Proxy e. A differenza delle soluzioni fornite, un proxy dovrebbe funzionare in qualsiasi tipo di ambiente, tra cui Node.js

var foo = new Object()

var specialFoo = new Proxy(foo, {
    get(target,name) {
        // do something here
        return name
    }
})

console.log(specialFoo.blabla) // this will output "blabla"

Se si desidera che le proprietà di essere callable, semplicemente restituire una funzione:

var specialFoo = new Proxy(foo, {
    get(target,name) {
        return function() {
            console.log('derp')
            return name
        }
    }
})


specialFoo.callMe() // this will print derp

Dettagli: documentazione su mozilla

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top