js prototype

JS中prototype怎么使用

小亿
158
2023-08-18 04:14:36
栏目: 编程语言

在 JavaScript 中,每个对象都有一个 prototype 属性,可以通过 Object.prototype 来访问。prototype 属性是一个指向原型对象的指针,它包含了共享给所有实例对象的属性和方法。通过原型对象,可以实现对象之间的继承和共享。

可以通过以下几种方式来使用 prototype

  1. 构造函数的 prototype 属性:通过给构造函数的 prototype 属性添加属性和方法,可以使得通过该构造函数创建的所有实例对象都共享这些属性和方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
var person1 = new Person("John", 25);
person1.sayHello(); // 输出 "Hello, my name is John"
  1. 实例对象的 __proto__ 属性:每个实例对象都有一个 __proto__ 属性,它指向构造函数的 prototype 属性。通过实例对象的 __proto__ 属性,可以访问到原型对象的属性和方法。
console.log(person1.__proto__ === Person.prototype); // 输出 true
person1.__proto__.sayHello(); // 输出 "Hello, my name is John"
  1. Object.create() 方法:可以使用 Object.create() 方法创建一个新对象,新对象的原型对象就是作为参数传入的对象。
var personProto = {
sayHello: function() {
console.log("Hello, my name is " + this.name);
}
};
var person1 = Object.create(personProto);
person1.name = "John";
person1.age = 25;
person1.sayHello(); // 输出 "Hello, my name is John"

需要注意的是,prototype 属性只在构造函数中存在,而 __proto__ 属性和 Object.create() 方法在所有对象中都存在。此外,通过 prototype 添加的属性和方法是在实例对象的原型链上,而不是直接在实例对象上,因此可以被所有实例对象共享。

0
看了该问题的人还看了