获取监听
获取监听(Get listener)是一种计算机编程中的事件处理机制,它用于监听(监测)某个对象上的获取事件。当该对象的属性被获取时,获取监听器会自动触发并执行预先定义的操作。通常,获取监听器被用于监测对象属性的变化,以便在属性被获取时自动执行一些操作。
在JavaScript中,可以使用Object.defineProperty()方法来定义一个对象的属性,并指定该属性的获取监听器。例如,下面的代码定义了一个对象person,它有一个名为name的属性,并且在该属性被获取时会触发一个获取监听器:
var person = {
firstName: "John",
lastName: "Doe"
};
Object.defineProperty(person, "name", {
get: function() {
return this.firstName + " " + this.lastName;
}
});
console.log(person.name); // Output: "John Doe"
复制代码
在上面的代码中,我们使用Object.defineProperty()方法定义了person对象的name属性,并指定了一个获取监听器。当我们获取person.name属性时,获取监听器会自动触发并返回firstName和lastName属性的值的组合。
问?get: function() 这个我不太理解
get 是一个JavaScript中的关键字,用于定义一个对象的属性的获取器(getter)。当我们使用 get 关键字定义一个属性的获取器时,我们需要指定一个函数,这个函数会在该属性被获取时自动执行。这个函数的返回值就是该属性的值。
在上面的代码中,我们使用 Object.defineProperty() 方法来定义一个对象 person 的属性 name。在属性定义的选项对象中,我们指定了一个 get 方法,这个方法是一个匿名函数,它会在 person.name 属性被获取时自动执行。在这个匿名函数中,我们返回了 this.firstName + " " + this.lastName,也就是 person 对象的 firstName 和 lastName 属性的值的组合,这个组合就是 person 对象的 name 属性的值。
因此,当我们在代码中调用 console.log(person.name) 时,会触发 person 对象的 name 属性的获取器函数,这个函数会返回 person 对象的 firstName 和 lastName 属性的值的组合,也就是 John Doe。最终,这个值会被输出到控制台中。
get 和 set
get 和 set 是 JavaScript 中用于定义对象属性的访问器(accessor)的关键字。通过使用这两个关键字,我们可以自定义对象属性的读取和写入行为,从而实现更加灵活和安全的对象属性访问方式。
get 用于定义一个对象属性的读取行为,也就是获取该属性的值时所执行的操作。当我们定义一个属性的 get 方法时,该方法会在访问该属性时自动调用,并返回该属性的值。例如:
const obj = {
get name() {
return "John";
}
};
console.log(obj.name); // 输出 "John"
javascript复制代码
在上面的例子中,我们定义了一个对象 obj 的 name 属性的 get 方法。当我们访问 obj.name 属性时,该方法会被自动调用,并返回字符串 "John"。
set 用于定义一个对象属性的写入行为,也就是设置该属性的值时所执行的操作。当我们定义一个属性的 set 方法时,该方法会在设置该属性的值时自动调用,并接收新值作为参数。例如:
const obj = {
_name: "",
set name(value) {
this._name = value.toUpperCase();
}
};
obj.name = "John";
console.log(obj._name); // 输出 "JOHN"
javascript复制代码
在上面的例子中,我们定义了一个对象 obj 的 _name 属性和 name 属性的 set 方法。当我们设置 obj.name 属性的值时,该方法会被自动调用,并将新值转换为大写字母后赋值给 _name 属性。
总之,get 和 set 可以让我们自定义对象属性的读取和写入行为,从而实现更加灵活和安全的对象属性访问方式。