📅  最后修改于: 2023-12-03 14:52:20.669000             🧑  作者: Mango
在 JavaScript 中,每一个对象都有原型以及属性。所有的 JavaScript 对象都继承自一个原型对象,并可以在继承的原型对象上添加属性和方法。
通过原型可以实现对象之间的共享属性和方法。创建一个包含原型的对象可以通过下面的几种方式实现:
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
var person1 = new Person("Alice");
var person2 = new Person("Bob");
person1.sayHello(); // Output: Hello, my name is Alice
person2.sayHello(); // Output: Hello, my name is Bob
以上代码中,我们先定义了一个构造函数 Person
,其中有一个属性 name
,并在其原型上添加了一个方法 sayHello
。最后通过 new
关键字创建了两个 Person
的实例。这两个实例继承了 Person.prototype
上的 sayHello
方法,由此可以共享方法和属性。
var Person = {
name: "",
sayHello: function() {
console.log("Hello, my name is " + this.name);
}
};
var person1 = Object.create(Person);
person1.name = "Alice";
var person2 = Object.create(Person);
person2.name = "Bob";
person1.sayHello(); // Output: Hello, my name is Alice
person2.sayHello(); // Output: Hello, my name is Bob
以上代码中,我们定义了一个对象字面量 Person
,其中有一个属性 name
,还有一个 sayHello
方法。然后通过 Object.create
方法创建了两个对象 person1
和 person2
。这两个对象都继承了 Person
对象的属性和方法,由此实现了对象之间的共享。
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
console.log("Hello, my name is " + this.name);
}
}
let person1 = new Person("Alice");
let person2 = new Person("Bob");
person1.sayHello(); // Output: Hello, my name is Alice
person2.sayHello(); // Output: Hello, my name is Bob
以上代码中,我们定义了一个 Person
类,其中有一个属性 name
和一个方法 sayHello
。然后通过 new
关键字创建了两个 Person
的实例。这两个实例继承了 Person
类的属性和方法,实现了对象之间的共享。
以上就是在 JavaScript 中创建带有原型的对象的三种方式。不同的方式可根据不同的需求选择,以实现最佳的代码效果。