返回
构造函数中的属性、原型中的方法有什么区别?
前端
2023-10-28 04:22:16
构造函数中的属性
构造函数中的属性是直接在构造函数中定义的属性,这些属性属于对象的实例,每个对象都有自己的一套构造函数属性。例如,以下代码定义了一个构造函数Person
,并在其中定义了一个属性name
:
function Person(name) {
this.name = name;
}
现在,我们可以使用Person
构造函数来创建对象:
const person1 = new Person('John');
const person2 = new Person('Mary');
person1
和person2
都是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中面向对象编程的重要概念,它们共同构建了面向对象编程的基础。构造函数中的属性是直接在构造函数中定义的,属于对象的实例,每个对象都有自己的一套构造函数属性。原型中的方法是定义在构造函数的原型对象上的,属于构造函数的所有实例对象,所有实例对象都可以使用这些方法。