构造函数和类

实例: 是由类或构造函数创建的具体对象,通过 new 关键字调用构造函数创建,或通过 class 关键字定义类并创建

类方法/静态方法:它是定义在类或构造函数本身上的方法,通过类或构造函数调用,不能通过实例调用 

1.通过构造器创建实例创建静态方法

函数通过关键字 function 定义。函数同样可以通过内置的 JavaScript 函数构造器(Function())定义。构造函数又称为构造器。

构造函数也是一个普通的函数,命名以大写字母开头,从表现形式来说,和普通的函数没有任何区别。

构造方法是一种特殊的方法:

  • 构造方法名为 constructor()。
  • 构造方法在创建新对象时会自动执行。
  • 构造方法用于初始化对象属性。
  • 如果不定义构造方法,JavaScript 会自动添加一个空的构造方法
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.describe = function() {  //定义实例方法
        return this.name + " is " + this.age + " years old"; 
    };
}
var person1 = new Person("Alice", 30);
console.log(person1.describe()); // 输出: Alice is 30 years old

构造函数内部定义方法是一种常见的做法,但这种方法会导致每个实例都会重新创建这些方法,从而占用更多的内存。为了优化内存使用,通常推荐在构造函数的原型(prototype)上定义方法,这样所有实例都会共享同一个方法,从而减少内存消耗‌。

因此上面的建议改成:

function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.describe = function() { //定义静态方法
    return this.name + " is " + this.age + " years old";
};
var person2 = new Person("Bob",19)

2.通过类来创建实例和静态方法

类是用于创建对象的模板

我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。

每个类中包含了一个特殊的方法 constructor(),它是类的构造函数,这种方法用于创建和初始化一个由 class 创建的对象

按照构造函数形式创建类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解

 

      .每个类都可以有一个自己的构造函数(方法),这个方法的名称为固定的constructor
      .每个类只能有一个constructor,如果包含多个构造函数,那么会抛出异常
      .当我们通过new一个类的时候会调用这个类的constructor,这时new做的事情和new一个构造函数做的事情是一样的。

 

// 定义一个名为Person的类
class Person {
    // 构造函数,用于创建类的实例
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
 
    // 实例方法,用于打印对象信息
    printInfo() {
        console.log(`Name: ${this.name}, Age: ${this.age}`);
    }
 
    // 静态方法
    static jumping = function(){ 
console.log(this.name + '在jumping')
}
} // 使用构造函数创建Person对象实例 const person2 = new Person('Bob', 30); person2.printInfo(); // 输出: Name: Bob, Age: 30

 

posted @ 2024-12-08 00:41  122www  阅读(7)  评论(0编辑  收藏  举报