Rumah > Tutorial CMS > WordTekan > teks badan

Tajuk yang dirumus semula ialah: Konsep Objek()

WBOY
Lepaskan: 2023-09-03 23:49:10
asal
728 orang telah melayarinya

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

Menggunakan pembina Object() terbina dalam, kita boleh mencipta objek kosong generik secara dinamik. Malah, jika anda masih ingat dari awal Bab 1, inilah yang kami lakukan dengan mencipta objek cody. Mari kita cipta semula objek cody.

Contoh: 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>
Salin selepas log masuk

Di sini, apa yang kita lakukan ialah menggunakan pembina Object() untuk mencipta objek generik yang dipanggil cody. Anda boleh menganggap pembina Object() sebagai alat pemotong kuki untuk mencipta objek kosong tanpa sifat atau kaedah yang dipratakrifkan (kecuali, sudah tentu, untuk objek yang diwarisi daripada rantai prototaip). Object() 构造函数来创建一个名为 cody 的通用对象。您可以将 Object() 构造函数视为一个千篇一律的工具,用于创建没有预定义属性或方法的空对象(当然,从原型链继承的对象除外)。

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


Object() 参数

Object() 构造函数采用一个可选参数。该参数是您想要创建的值。如果您未提供任何参数,则将假定 nullundefined 值。

示例: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>
Salin selepas log masuk

如果将 nullundefined 之外的值传递给 Object 构造函数,则传递的值将被创建为对象。因此理论上,我们可以使用 Object() 构造函数来创建任何其他具有构造函数的本机对象。在下一个示例中,我就是这么做的。

示例: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>
Salin selepas log masuk

Object() 属性和方法

Object() 对象具有以下属性(不包括继承的属性和方法):

属性(Object.prototype;):

  • 原型

Object() 实例属性和方法

Object()对象实例具有以下属性和方法(不包括继承的属性和方法):

实例属性 (var myObject = {}; myObject.constructor;):

  • 构造函数

实例方法 (var myObject = {}; myObject.toString();):

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

原型链以Object.prototype结尾,因此Object()的所有属性和方法都会被所有JavaScript对象继承。


使用“对象文字”创建 Object() 对象

创建“对象文字”需要使用大括号实例化带有或不带有属性的对象(var cody = {};)。还记得在第一章开始时我们创建了一次性 cody 对象,然后使用点表示法赋予 cody 对象属性吗?让我们再做一次。

示例: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>
Salin selepas log masuk

请注意,代码中创建 cody 对象及其属性需要五个语句。使用对象文字表示法,我们可以在一条语句中表达相同的 cody 对象。

示例: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>
Salin selepas log masuk

使用文字表示法使我们能够使用更少的代码创建对象(包括定义的属性)并直观地封装相关数据。请注意在单个语句中使用 :, 运算符。由于其简洁性和可读性,这实际上是在 JavaScript 中创建对象的首选语法。

您应该知道属性名称也可以指定为字符串:

示例: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>
Salin selepas log masuk

没有必要将属性指定为字符串,除非属性名称:

  • 是保留关键字之一(class)。
  • 包含空格或特殊字符(数字、字母、美元符号 ($) 或下划线 (_) 字符以外的任何字符)。
  • 以数字开头。

小心!对象的最后一个属性不应有尾随逗号。这会在某些 JavaScript 环境中导致错误。


所有对象继承自Object.prototype

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

Jika tidak jelas, pembina Object() ialah objek itu sendiri. Iaitu, pembina adalah berdasarkan objek yang dicipta daripada pembina Function. Ini boleh mengelirukan. Ingat, seperti pembina Array, pembina Object hanya meludahkan objek kosong. Ya, anda boleh mencipta semua objek kosong yang anda suka. Walau bagaimanapun, mencipta objek kosong seperti cody sangat berbeza daripada mencipta pembina anda sendiri dengan sifat yang telah ditetapkan. Pastikan anda memahami bahawa cody hanyalah objek kosong berdasarkan pembina Object(). Untuk benar-benar memanfaatkan kuasa JavaScript, anda bukan sahaja perlu belajar cara membuat bekas objek kosong daripada Object(), tetapi anda juga perlu belajar cara membina "class" objek anda sendiri (< code>Person()), seperti pembina Object() itu sendiri. 🎜

Objek() parameter

🎜Objek() Pembina mengambil parameter pilihan. Parameter ini ialah nilai yang anda ingin buat. Jika anda tidak memberikan sebarang parameter, nilai null atau undefined akan diandaikan. 🎜 🎜Contoh: sample70.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>
Salin selepas log masuk
Salin selepas log masuk
🎜Jika nilai selain daripada null atau undefined diserahkan kepada pembina Object, nilai yang diluluskan akan dibuat sebagai objek. Jadi secara teori, kita boleh menggunakan pembina Object() untuk mencipta sebarang objek asli lain yang mempunyai pembina. Dalam contoh seterusnya, saya berbuat demikian. 🎜 🎜Contoh: sample71.html🎜 rrreee

Objek() Sifat dan Kaedah

🎜Objek() Objek mempunyai sifat berikut (tidak termasuk sifat dan kaedah yang diwarisi): 🎜 🎜Sifat (Object.prototype;): 🎜
  • Prototaip

Object() Sifat dan kaedah contoh

🎜Object()Instance objek mempunyai sifat dan kaedah berikut (tidak termasuk sifat dan kaedah yang diwarisi): 🎜 🎜Sifat instance (var myObject = {}; myObject.constructor;):🎜
  • Pembina
🎜Kaedah contoh (var myObject = {}; myObject.toString();): 🎜
  • hasOwnProperty()
  • isPrototypeOf()
  • propertyIsEnumerable()
  • toLocaleString()
  • toString()
  • valueOf()
🎜Rantaian prototaip berakhir dengan Object.prototype, jadi semua sifat dan kaedah Object() akan diwarisi oleh semua objek JavaScript. 🎜

Buat objek Object() menggunakan "literal objek"

🎜Mencipta "objek literal" memerlukan instantiate objek dengan atau tanpa sifat menggunakan pendakap kerinting (var cody = {};). Ingat pada permulaan Bab 1 apabila kita mencipta objek cody sekali dan kemudian menggunakan notasi titik untuk menetapkan sifat kepada objek cody? Jom buat lagi. 🎜 🎜Contoh: sample72.html🎜 rrreee 🎜Sila ambil perhatian bahawa kod memerlukan lima pernyataan untuk mencipta objek cody dan sifatnya. Menggunakan notasi literal objek, kita boleh menyatakan objek cody yang sama dalam satu pernyataan. 🎜 🎜Contoh: sample73.html🎜 rrreee 🎜Menggunakan notasi literal membolehkan kami mencipta objek (termasuk sifat yang ditentukan) dengan kod yang kurang dan merangkum data berkaitan secara visual. Perhatikan penggunaan operator : dan , dalam satu pernyataan. Oleh kerana kesederhanaan dan kebolehbacaannya, ini sebenarnya sintaks pilihan untuk mencipta objek dalam JavaScript. 🎜 🎜Anda harus tahu bahawa nama hartanah juga boleh dinyatakan sebagai rentetan: 🎜 🎜Contoh: sample74.html🎜 rrreee 🎜Tidak perlu menentukan sifat sebagai rentetan, melainkan nama harta itu ialah: 🎜
  • ialah salah satu kata kunci yang dikhaskan (kelas).
  • Mengandungi ruang atau aksara khas (sebarang aksara selain nombor, huruf, tanda dolar ($), atau aksara garis bawah (_)).
  • Mulakan dengan nombor.
🎜Berhati-hati! Sifat terakhir objek tidak sepatutnya mempunyai koma di belakang. Ini boleh menyebabkan ralat dalam sesetengah persekitaran JavaScript. 🎜

Semua objek mewarisi daripada Object.prototype

🎜Pembina Object() dalam JavaScript adalah istimewa kerana atribut prototaipnya ialah hentian terakhir dalam rantaian prototaip. 🎜

在以下示例中,我使用 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>
Salin selepas log masuk
Salin selepas log masuk

结论

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

Atas ialah kandungan terperinci Tajuk yang dirumus semula ialah: Konsep Objek(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!