null
(et undefined
) ne supportent pas accès à la propriété (l'opérateur point), autrement dit , null.whatever
ne fonctionne jamais. Donc, ce que vous cherchez n'est pas possible. Reference.
De plus, certaines méthodes (la plupart?) Intégrées, y compris indexOf
ne prennent pas en charge les liaisons null
, donc ''.indexOf.call(null,...)
ne fonctionnera pas non plus.
Je comprends la raison d'être à votre question, avoir des méthodes sur nulls peuvent être utiles dans des contextes « carte-Invoke », comme
source.map(x => x.someMethod())
où vous voulez retourner une valeur par défaut pour NULLS/undefineds qui pourraient se produire dans la source. Malheureusement, il semble y avoir aucun moyen de le faire de façon concise, vous devez fournir une enveloppe de sécurité pour d'éventuelles nulls:
source.map(x => invoke(x, func))
où invoke
est quelque chose comme return x === null ? null : func.apply(x)
Exemple complet:
let isNull = x => x === null || typeof x === 'undefined';
let invoke = (func, ...args) => x => isNull(x) ? null : func.apply(x, args);
a = ['foo', 'bar', null, 'bbaazz'];
// z = a.map(x => x.indexOf('a')) // this will fail
z = a.map(invoke(''.indexOf, 'a')); // this works
console.log(z);
autant que je sache, il est impossible. –
'null' dans JS est une valeur primitive. Ce n'est pas un objet et n'a pas de méthodes. – hindmost
En outre tous les très bons commentaires, envelopper la fonction avec votre fonction et retourner '-1' si l'objet est nul. –