Javascript semble prendre quelques libertés quand il s'agit de ses types et objets intégrés.Quelle est la différence entre Math et Array en Javascript?
Pour obtenir les fonctions à l'intérieur du type Array que vous pouvez faire ceci:
> Array().slice
function slice() {
[native code]
}
Voici donc tableau ressemble à une fonction standard qui est utilisé en tant que constructeur. Sauf que ... slice n'est pas une fonction membre de la fonction Array(), c'est une fonction membre de l'objet Array.
Une autre chose d'inhabituel Array() est-il semble renvoyer un objet Array si vous l'appelez avec de nouveaux() ou non:
> var a = Array()
undefined
> a
[]
> a.length
0
> var b = new Array()
undefined
> b
[]
> b.length
0
Math d'autre part semble être un construit en objet singleton c'est toujours présent (ie: pas besoin d'instancier). Vous utiliserez donc Math.min.apply avec Array en utilisant Array(). Slice.apply.
Ma question est ce qui rend Array() si différent d'un constructeur que vous écrivez vous-même et les autres objets intégrés de Javascript.
Math est, au moins dans Chrome, une instance. Sur Firefox, il s'intègre directement au code natif, il n'est même pas utilisable dans une boucle 'for in'. –
Oui, je suis sûr que ce n'est pas vraiment défini ainsi - ce que je voulais dire c'est que c'est juste une illustration de la nature de l'objet. – Pointy
@Ivo, vous ne pouvez pas énumérer les propriétés de l'objet 'Math' avec une boucle' for-in' car elles sont décrites comme ** non-énumérables **, par exemple: 'Math.propertyIsEnumerable ('max'); 'produit' false' – CMS