返回

构造函数中的属性、原型中的方法有什么区别?

前端

构造函数中的属性

构造函数中的属性是直接在构造函数中定义的属性,这些属性属于对象的实例,每个对象都有自己的一套构造函数属性。例如,以下代码定义了一个构造函数Person,并在其中定义了一个属性name

function Person(name) {
  this.name = name;
}

现在,我们可以使用Person构造函数来创建对象:

const person1 = new Person('John');
const person2 = new Person('Mary');

person1person2都是Person构造函数创建的对象,它们都有自己的name属性。我们可以通过以下代码访问这些属性:

console.log(person1.name); // John
console.log(person2.name); // Mary

原型中的方法

原型中的方法是定义在构造函数的原型对象上的方法,这些方法属于构造函数的所有实例对象,所有实例对象都可以使用这些方法。例如,以下代码在Person构造函数的原型对象上定义了一个方法greet()

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name}.`);
};

现在,我们可以使用Person构造函数创建对象,并调用greet()方法:

const person1 = new Person('John');
const person2 = new Person('Mary');

person1.greet(); // Hello, my name is John.
person2.greet(); // Hello, my name is Mary.

区别

构造函数中的属性是直接在构造函数中定义的,属于对象的实例,每个对象都有自己的一套构造函数属性。原型中的方法是定义在构造函数的原型对象上的,属于构造函数的所有实例对象,所有实例对象都可以使用这些方法。

构造函数中的属性只能在构造函数中定义,原型中的方法可以在构造函数中定义,也可以在原型对象上定义。

构造函数中的属性是实例属性,原型中的方法是类方法。

总结

构造函数中的属性和原型中的方法是JavaScript中面向对象编程的重要概念,它们共同构建了面向对象编程的基础。构造函数中的属性是直接在构造函数中定义的,属于对象的实例,每个对象都有自己的一套构造函数属性。原型中的方法是定义在构造函数的原型对象上的,属于构造函数的所有实例对象,所有实例对象都可以使用这些方法。