Der umformulierte Titel lautet: Das Konzept von Object()

WBOY
Freigeben: 2023-09-03 23:49:10
Original
728 Leute haben es durchsucht

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

Mit dem integrierten Object()-Konstruktor können wir generische leere Objekte dynamisch erstellen. Wenn Sie sich an den Anfang von Kapitel 1 erinnern, haben wir genau das getan, indem wir das Cody-Objekt erstellt haben. Lassen Sie uns das Cody-Objekt neu erstellen.

Beispiel: 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>
Nach dem Login kopieren

Hier verwenden wir lediglich den Object() 构造函数来创建一个名为 cody 的通用对象。您可以将 Object()-Konstruktor als Standardwerkzeug zum Erstellen leerer Objekte ohne vordefinierte Eigenschaften oder Methoden (außer natürlich von Objekten, die von der Prototypenkette geerbt wurden).

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


Object() Parameter

Object() 构造函数采用一个可选参数。该参数是您想要创建的值。如果您未提供任何参数,则将假定 nullundefined Der Konstruktor akzeptiert einen optionalen Parameter. Dieser Parameter ist der Wert, den Sie erstellen möchten. Wenn Sie keine Parameter angeben, wird ein null- oder undefinierter-Wert angenommen.

Beispiel: 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>
Nach dem Login kopieren

Wenn ein anderer Wert als null oder undefiniert an den Object-Konstruktor übergeben wird, wird der übergebene Wert als Objekt erstellt. Theoretisch können wir also den nullundefined 之外的值传递给 Object 构造函数,则传递的值将被创建为对象。因此理论上,我们可以使用 Object()-Konstruktor verwenden, um jedes andere native Objekt zu erstellen, das über einen Konstruktor verfügt. Im nächsten Beispiel mache ich genau das.

Beispiel: 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>
Nach dem Login kopieren

Object() Eigenschaften und Methoden

Object() Das Objekt verfügt über die folgenden Eigenschaften (ausgenommen geerbte Eigenschaften und Methoden):

Eigenschaften (Object.prototype;):

  • 原型

Object()Instanzeigenschaften und -methoden

Object()Objektinstanzen haben die folgenden Eigenschaften und Methoden (ausgenommen geerbte Eigenschaften und Methoden):

Instanzeigenschaften (var myObject = {}; myObject.constructor;):

  • 构造函数

Instanzmethoden (var myObject = {}; myObject.toString();):

  • hasOwnProperty()
  • isPrototypeOf()
  • propertyIsEnumerable()
  • toLocaleString()
  • toString()
  • valueOf()
Die

-Prototypenkette endet mit Object.prototype结尾,因此Object(), sodass alle Eigenschaften und Methoden von

von allen JavaScript-Objekten geerbt werden.

Object()Erstellen Sie

Objekte

mit „Objektliteralen“ var cody = {};Um ein „Objektliteral“ zu erstellen, muss ein Objekt mit oder ohne Eigenschaften mithilfe von geschweiften Klammern (

) instanziiert werden. Erinnern Sie sich an den Anfang von Kapitel 1, als wir ein einmaliges Cody-Objekt erstellten und dann die Punktnotation verwendeten, um dem Cody-Objekt Eigenschaften zuzuweisen? Lass es uns noch einmal machen.

Beispiel: 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>
Nach dem Login kopieren
cody 对象及其属性需要五个语句。使用对象文字表示法,我们可以在一条语句中表达相同的 codyBitte beachten Sie, dass der Code

Objekte erstellt.

Beispiel: 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>
Nach dem Login kopieren
:,Die Verwendung der Literalnotation ermöglicht es uns, Objekte (einschließlich definierter Eigenschaften) mit weniger Code zu erstellen und zugehörige Daten visuell zu kapseln. Beachten Sie die Verwendung des

-Operators in einer einzelnen Anweisung. Aufgrund ihrer Einfachheit und Lesbarkeit ist dies tatsächlich die bevorzugte Syntax zum Erstellen von Objekten in JavaScript.

Sie sollten wissen, dass Eigenschaftsnamen auch als Zeichenfolgen angegeben werden können:

Beispiel: 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>
Nach dem Login kopieren

Es ist nicht erforderlich, Eigenschaften als Zeichenfolgen anzugeben, es sei denn, der Eigenschaftsname lautet:
  • class ist eines der reservierten Schlüsselwörter (
  • ).
  • Enthält Leerzeichen oder Sonderzeichen (alle anderen Zeichen als Zahlen, Buchstaben, Dollarzeichen ($) oder Unterstriche (_)).
  • Beginnen Sie mit einer Zahl.

Sei vorsichtig! Die letzte Eigenschaft des Objekts sollte kein abschließendes Komma haben. Dies kann in einigen JavaScript-Umgebungen zu Fehlern führen.

Object.prototypeAlle Objekte erben von

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

-Konstruktor in JavaScript ist etwas Besonderes, da sein prototype-Attribut die letzte Station in der Prototypenkette ist. 🎜

在以下示例中,我使用 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>
Nach dem Login kopieren

结论

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

Das obige ist der detaillierte Inhalt vonDer umformulierte Titel lautet: Das Konzept von Object(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!