Maison  >  Article  >  Tutoriel CMS  >  Le titre reformulé est : Le concept d'objet()

Le titre reformulé est : Le concept d'objet()

WBOY
WBOYoriginal
2023-09-03 23:49:10746parcourir

重新表达的标题为:The Concept of Object()

En utilisant le constructeur Object() intégré, nous pouvons créer dynamiquement des objets vides génériques. En fait, si vous vous souvenez du début du chapitre 1, c'est exactement ce que nous avons fait en créant l'objet cody. Recréons l'objet cody.

Exemple : sample69.html

<!DOCTYPE html><html lang="en"><body><script>

	var cody = new Object(); // Create an empty object with no properties.

	for (key in cody) { // Confirm that cody is an empty generic object.
		if (cody.hasOwnProperty(key)) {
			console.log(key); // Should not see any logs, because cody itself has no properties.
		}
	}

</script></body></html>

Ici, tout ce que nous faisons est d'utiliser le constructeur Object() 构造函数来创建一个名为 cody 的通用对象。您可以将 Object() comme un outil à l'emporte-pièce pour créer des objets vides sans propriétés ni méthodes prédéfinies (sauf pour les objets hérités de la chaîne de prototypes, bien sûr).

Si ce n'est pas évident, Object() 构造函数本身就是一个对象。也就是说,构造函数基于从 Function 构造函数创建的对象。这可能会令人困惑。请记住,与 Array 构造函数一样,Object 构造函数只是吐出空白对象。是的,您可以创建您喜欢的所有空对象。但是,创建像 cody 这样的空对象与使用预定义属性创建自己的构造函数有很大不同。确保您了解 cody 只是一个基于 Object() 构造函数的空对象。要真正利用 JavaScript 的力量,您不仅需要学习如何从 Object() 创建空对象容器,还需要学习如何构建您自己的对象“类”(Person()),例如Object()le constructeur lui-même.


Object() Paramètres

Object() 构造函数采用一个可选参数。该参数是您想要创建的值。如果您未提供任何参数,则将假定 nullundefined Le constructeur prend un paramètre facultatif. Ce paramètre est la valeur que vous souhaitez créer. Si vous ne fournissez aucun paramètre, une valeur null ou undefined sera supposée.

Exemple : sample70.html

<!DOCTYPE html><html lang="en"><body><script>

	// Create an empty object with no properties.
	var cody1 = new Object();
	var cody2 = new Object(undefined);
	var cody3 = new Object(null);

	console.log(typeof cody1, typeof cody2, typeof cody3); // Logs 'object object object'.

</script></body></html>

Si une valeur autre que null ou undefined est transmise au constructeur Object, la valeur transmise sera créée en tant qu'objet. Donc, en théorie, nous pouvons utiliser le constructeur nullundefined 之外的值传递给 Object 构造函数,则传递的值将被创建为对象。因此理论上,我们可以使用 Object() pour créer tout autre objet natif doté d'un constructeur. Dans l’exemple suivant, c’est exactement ce que je fais.

Exemple : sample71.html

<!DOCTYPE html><html lang="en"><body><script>

	/* Use the Object() constructor to create string, number, array, function, Boolean, and regex objects. */

	// The following logs confirm object creation.
	console.log(new Object('foo'));
	console.log(new Object(1));
	console.log(new Object([]));
	console.log(new Object(function () { }));
	console.log(new Object(true));
	console.log(new Object(/\bt[a-z]+\b/));

	/* Creating string, number, array, function, Boolean, and regex object instances via the Object() constructor is really never done. I am just demonstrating that it can be done. */

</script></body></html>

Object() Propriétés et méthodes

Object() L'objet possède les propriétés suivantes (hors propriétés et méthodes héritées) :

Propriétés (Object.prototype;):

  • 原型

Object()Propriétés et méthodes de l'instance

Object()Les instances d'objet ont les propriétés et méthodes suivantes (à l'exclusion des propriétés et méthodes héritées) :

Propriétés de l'instance (var myObject = {}; myObject.constructor;) :

  • 构造函数

Méthodes d'instance (var myObject = {}; myObject.toString();) :

  • hasOwnProperty()
  • isPrototypeOf()
  • propertyIsEnumerable()
  • toLocaleString()
  • toString()
  • valueOf()
La chaîne de prototypes

se termine par Object.prototype结尾,因此Object(), donc toutes les propriétés et méthodes de

seront héritées par tous les objets JavaScript.

Object()Créez des

objets

en utilisant des « littéraux d'objet » var cody = {};Créer un "objet littéral" nécessite d'instancier un objet avec ou sans propriétés à l'aide d'accolades (

). Vous vous souvenez du début du chapitre 1, lorsque nous avons créé un objet cody unique, puis utilisé la notation par points pour attribuer des propriétés à l'objet cody ? Faisons-le encore.

Exemple : sample72.html

<!DOCTYPE html><html lang="en"><body><script>

	var cody = new Object();
	cody.living = true;
	cody.age = 33;
	cody.gender = 'male';
	cody.getGender = function () { return cody.gender; };

	console.log(cody); // Logs cody object and properties.

</script></body></html>
cody 对象及其属性需要五个语句。使用对象文字表示法,我们可以在一条语句中表达相同的 codyVeuillez noter que le code crée

objets.

Exemple : sample73.html

<!DOCTYPE html><html lang="en"><body><script>

	var cody = {
		living: true,
		age: 23,
		gender: 'male',
		getGender: function () { return cody.gender; }
	};
	// Notice the last property has no comma after it.

	console.log(cody); // Logs the cody object and its properties.

</script>
</body>
:,L'utilisation de la notation littérale nous permet de créer des objets (y compris des propriétés définies) avec moins de code et d'encapsuler visuellement les données associées. Notez l'utilisation de l'opérateur

dans une seule instruction. En raison de sa simplicité et de sa lisibilité, il s'agit en fait de la syntaxe préférée pour créer des objets en JavaScript.

Vous devez savoir que les noms de propriétés peuvent également être spécifiés sous forme de chaînes :

Exemple : sample74.html

<!DOCTYPE html><html lang="en"><body><script>

	var cody = {
		'living': true,
		'age': 23,
		'gender': 'male',
		'getGender': function () { return cody.gender; }
	};

	console.log(cody); // Logs the cody object and its properties.

</script>
</body>

Il n'est pas nécessaire de spécifier les propriétés sous forme de chaînes, sauf si le nom de la propriété est :
  • class fait partie des mots-clés réservés (
  • ).
  • Contient des espaces ou des caractères spéciaux (tout caractère autre que des chiffres, des lettres, des signes dollar ($) ou des caractères de soulignement (_)).
  • Commencez par un numéro.

Soyez prudent ! La dernière propriété de l’objet ne doit pas avoir de virgule finale. Cela peut provoquer des erreurs dans certains environnements JavaScript.

Object.prototypeTous les objets héritent de

Object()构造函数比较特殊,因为它的prototypeLe constructeur

en JavaScript est spécial car son attribut prototype est la dernière étape de la chaîne de prototypes. 🎜

在以下示例中,我使用 foo 属性扩充 Object.prototype,然后创建一个字符串并尝试访问 foo 属性,就好像它是字符串实例的属性一样。由于 myString 实例没有 foo 属性,因此原型链启动并在 String.prototype 中查找值。它不在那里,所以下一个要查找的位置是 Object.prototype,这是 JavaScript 查找对象值的最终位置。找到了 foo 值,因为我添加了它,因此它返回 foo 的值。

示例:sample75.html

<!DOCTYPE html><html lang="en"><body><script>

	Object.prototype.foo = 'foo';

	var myString = 'bar';


	// Logs 'foo', being found at Object.prototype.foo via the prototype chain.
	console.log(myString.foo);

</script>
</body>

结论

小心!添加到 Object.prototype 的任何内容都将显示在 for in 循环和原型链中。因此,据说禁止更改 Object.prototype

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn