11548 sujets

JavaScript, DOM et API Web HTML5

Message à ne pas tenir compte. A supprimer par un modérateur ! Merci.
Modifié par Artemus24 (03 Jul 2011 - 00:01)
Salut sacapuss_,

ne confond pas OBJECT et ARRAY. Ça se ressemble énormément mais c'est différent. Puisque tu mets des [] alors c'est un tableau. Voici le code pour ton exemple. Je l'ai testé et ça fonctionne !

<html>
<head>
<title>test</title>
<script language="javascript">
window.onload = function ()
{
	Array.prototype.isIn = function ()
	{
		for (var i=0; i<this.length; i++)
		{
			for (var j=0; j<arguments.length; j++)
			{
				if (this[ i ] == arguments[ j ])
						document.write(this[ i ] + "<br />");
				else	document.write("non<br />");
			}
		}
	};

	var tag = ["a", "g", "z"];
	tag.isIn("a", "g", "j", "i");
};
</script>
</head>
<body>
</body>
</html>


A l'affichage de l'exemple ci-dessus, j'ai eu un problème. Les [ i ] du this ne se sont pas affichés. C'est pour cela que j'ai placé des espaces avant et après le i.

@+
Modifié par Artemus24 (02 Jul 2011 - 23:59)
Bonsoir scapapuss_,

si j'ai bien compris, tu désires balayés un objet et vérifier si il existe une propriété !

Est-ce cela ?

"Javascript : gardez le meilleur ! page:100" a écrit :

objet.hasOwnProperty(nom)

La méthode hasOwnProperty renvoie true si l'objet contient une propriété nommée nom. La chaine de prototypes n'est pas examinée. Cette méthode est inutile si le nom est hasOwnProperty :

var a = {member : true};
var b = Object.create(a);

var t = a.hasOwnProperty('member'); // t vaut true
var u = b.hasOwnProperty("member); // u vaut false
var v = b.member;


Sinon, j'ai essayé de comprendre ta fonction. Voici un nouvel exemple :
<html>
<head>
<title>test</title>
<script language="javascript">
window.onload = function ()
{
	var toto = {a: "ca marche", b : "la aussi" };
	var tata = {a: "ca marche"};
	
	if (toto.test(tata))
			document.write("OK")
	else	document.write("KO");
};

Object.prototype.test = function ()
{
	for (var j in this)
	{
		if (j != "test")
		{
			for (var k in arguments[0])
			{
				if (k != "test")
				{
					if ((j == k) && (this[j] == arguments[0][k]))
						return true;
				}
			}
		}
	}

	return false;
};
</script>
</head>

<body>
</body>
</html>


@+
Modifié par Artemus24 (03 Jul 2011 - 02:51)
Salut,

Le this représente un String si c'en est un, mais le this il est considérer comme un type Object car la fonction est créé dans le prototype de Object.

Object.prototype.test = function(){
	alert(typeof(this))
	alert(this instanceof Object)
	alert(this instanceof String)
	alert(toString.call(this))
}

a=""
alert(typeof(a)) //string
a.test()
/*resultat:
object
true
true
[object String]
*/


Sinon pour ton isIn, utilise un tableau de type et indexOf:
tagname='INPUT'
['INPUT','TEXTAREA'].indexOf(tagname) != -1
Bonjour à toutes et à tous,

en principe THIS est une adresse !

A l'intérieur d'une fonction, le THIS fait référence à l'objet auquel la fonction est une méthode. Donc l'adresse est l'adresse de cette objet.

Si la variable n'existe pas dans l'objet alors la fonction procède à sa création.

Exemple : this.chaine = "bla bla bla";

Si tu ne sais pas ce que représente le THIS.machin dans une fonction alors teste son type. Par exemple :
if (typeof THIS.machin === "string")
{
	c'est bien une chaine de caractères;
}
car en principe la méthode travail toujours sur des instances de l'objet auquel elle appartient. Il se peut que par l'usage du prototype tu puisses travailler sur une variable portant le même nom et n'étant pas du même type que ce que tu supposes être dans ta fonction, surtout si tu n'es pas le créateur de l'objet. Alors pour ne pas avoir d’ambiguïté, teste toujours le type de ta variable, auquel tu fais référence.

Donc je confirme les dires de jo_link_noir. Alors prudence !

@+
Modifié par Artemus24 (16 Jul 2011 - 18:59)