📜  javascript中的属性(1)

📅  最后修改于: 2023-12-03 15:01:47.840000             🧑  作者: Mango

Javascript中的属性

在Javascript中,属性是用于描述对象状态和特征的值,包括基本数据类型和对象类型。属性可以分为两类:实例属性和原型属性。

实例属性

实例属性属于特定的对象实例,每个实例都有自己的属性值,并且在创建实例的过程中产生。可以通过以下两种方式来定义实例属性:

  • 构造函数内部定义
function Person(name, age) {
  this.name = name; //实例属性
  this.age = age; //实例属性
}
  • 实例对象外部定义
var person = new Person("Tom", 20);
person.gender = "male"; //实例对象外部定义
原型属性

原型属性属于对象的原型,用于存储与对象有关的共享信息。如果某属性在实例中不存在,则会从原型中查找相应的属性。可以通过以下两种方式来定义原型属性:

  • 构造函数内部定义
function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.gender = "male"; //原型属性
  • 原型对象外部定义
function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype = {
  gender: "male" //原型对象外部定义
};

需要注意的是,如果通过原型对象外部定义方式来定义原型属性,则会覆盖构造函数内部定义的原型属性。

访问属性

可以使用点操作符或方括号来访问对象的属性。如果属性名是一个有效的标识符,则可以使用点操作符;如果属性名包含空格、数字等特殊字符,则必须使用方括号。

var person = {
  firstName: "Tom",
  lastName: "Smith"
};

console.log(person.firstName); //Tom
console.log(person["lastName"]); //Smith
属性特性

每个属性都有自己的特性,包括值(value)、可写性(writable)、可枚举性(enumerable)和可配置性(configurable)。

  • 值(value):表示属性的当前值,默认为undefined。
  • 可写性(writable):表示属性是否允许修改,默认为true。
  • 可枚举性(enumerable):表示属性是否可枚举,默认为true。
  • 可配置性(configurable):表示是否可以删除属性或修改属性特性,默认为true。

可以使用Object.defineProperty()方法来修改属性的特性。例如,将属性设置为不可写:

var person = {
  firstName: "Tom",
  lastName: "Smith"
};

Object.defineProperty(person, "firstName", {
  writable: false
});

person.firstName = "Jack"; //无效操作
console.log(person.firstName); //Tom
总结

Javascript中的属性用于描述对象状态和特征,包括实例属性和原型属性。实例属性属于特定的对象实例,每个实例都有自己的属性值;而原型属性属于对象的原型,用于存储与对象有关的共享信息。属性可以通过点操作符或方括号来访问,每个属性都有自己的特性,包括值、可写性、可枚举性和可配置性。可以使用Object.defineProperty()方法来修改属性的特性。