带你读《现代Javascript高级教程》七、原型和原型链(1)https://developer.aliyun.com/article/1349650?groupCode=tech_library
2.构造函数和原型对象
构造函数是用于创建对象的特殊函数。它通常以大写字母开头,通过使用 new 关键字来调用构造函数,我们可以创建一个新的对象实例。构造函数在创建对象时可以执行一些初始化操作,并为对象添加属性和方法。
原型对象是构造函数的一个属性,它是一个普通的 JavaScript 对象。原型对象上的属性和方法可以被通过构造函数创建的对象实例所继承。通过将属性和方法定义在原型对象上,我们可以实现方法的共享和节省内存空间。
让我们通过一个示例来说明构造函数和原型对象的概念以及如何使用它们来创建对象和共享方法:
// 构造函数function Person(name, age) { this.name = name; this.age = age;} // 在原型对象上添加方法Person.prototype.sayHello = function() { console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");}; // 创建对象实例var person1 = new Person("John", 25);var person2 = new Person("Alice", 30); // 调用共享的方法 person1.sayHello(); // 输出: "Hello, my name is John and I am 25 years old." person2.sayHello(); // 输出: "Hello, my name is Alice and I am 30 years old."
在这个示例中,我们定义了一个构造函数 Person,它接受 name 和 age 参数,并将它们赋值给对象的属性。
然后,我们通过在原型对象 Person.prototype 上添加一个方法 sayHello,使得通过 Person 构造函数创建的对象实例可以访问该方法。我们创建了两个对象实例 person1 和 person2,并分别调用了共享的方法 sayHello。
以下是一个简单的构造函数和原型对象的流程图示意图:
+----------------------------------+ | Constructor | | | | +--------------------------+ | | | Prototype Properties | | | +--------------------------+ | | | | - Property: name | | - Property: age | | - Method: sayHello() | | | +----------------------------------+ ^ | | +----------------------------------+ | Object Instance | | | | +--------------------------+ | | | Instance Properties | | | +--------------------------+ | | | | - Property: name | | - Property: age | | | +----------------------------------+
在这个示意图中,构造函数和原型对象之间存在关联,构造函数拥有原型对象的引用。通过构造函数,我们可以创建对象实例,并且这些实例可以通过原型对象继承原型上的属性和方法。
带你读《现代Javascript高级教程》七、原型和原型链(3)https://developer.aliyun.com/article/1349648?groupCode=tech_library