在前端开发中,对象是一个非常重要的概念。对象可以看做是一组属性的集合,这些属性描述了对象的特征和行为。JavaScript中的几乎所有内容都是对象,从简单的字符串和数字到复杂的函数和类。在本文中,我们将深入探讨对象的基础知识,并介绍如何在浏览器中使用watch()
方法来监视对象属性的变化。
对象的基础知识
创建对象
在JavaScript中,有多种创建对象的方式。其中一种常见的方式是使用字面量语法:
----- ------ - - ----- -------- ---- --- ---------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ------- - --
在上面的例子中,我们创建了一个包含三个属性的对象:name
、age
和sayHello
。注意sayHello()
方法的定义方式与普通函数不同,这是因为它是一个对象的方法。
另一种创建对象的方式是使用构造函数。例如,我们可以创建一个Person
类:
----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ------- - - ----- ----- - --- --------------- ----
在上面的例子中,我们使用class
语法定义了一个Person
类,并通过new
关键字创建了一个名为alice
的Person
对象。
访问属性
一旦我们创建了一个对象,就可以访问它的属性。有两种方式来访问对象属性:
- 使用点符号:
------------------------- -- ------- ---------- - --- ------------------ -- ---- -- ---- -- ----- --- --- -- ----- -----
- 使用方括号和字符串:
---------------------------- -- ------- ------------- - --- --------------------- -- ---- -- ---- -- ----- --- --- -- ----- -----
第二种方法允许我们使用变量来访问属性:
----- -------- - ------- ------------------------------ -- -------
删除属性
要从对象中删除属性,可以使用delete
关键字:
------ ----------- ------------------------ -- ---------
请注意,删除一个不存在的属性不会产生错误:
------ -------------- -- ------
枚举属性
可以使用for...in
循环枚举对象的属性:
--- ------ -------- -- ------- - ------------------------- ---------------------- -
监视对象属性的变化
在浏览器中,可以使用Object.prototype.watch()
和Object.prototype.unwatch()
方法来监视对象属性的变化。这些方法已经被标记为废弃,但在某些情况下仍然有用。
watch()
watch()
方法接受两个参数:要监视的属性名称和回调函数。每当该属性的值发生变化时,回调函数就会被调用:
----- ------ - - ----- -------- ---- --- ---------- - ---------------- -- ---- -- ------------ --- --- ----------- ----- ------- - -- ------------------- ---------- --------- --------- -- - ------------------------ ------- ---- ----------- -- -------------- --- ---------- - --- -- ---------- ------- ---- -- -- ---
注意回调函数接收三个参数:属性名称、旧值和新值。
unwatch()
要停止监视属性的变化,可以使用unwatch()
方法:
- ----------------------------------------------------------- -------- ---------------------------------------------------------------------------------------