function Person(name, age) {
this.name = name;
this.age = age;
}
var person1 = new Person('John', 30);
var person2 = new Person('Jane', 25);
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', 30);
person1.sayHello(); // 输出:"Hello, my name is John"
function Animal() {
this.type = 'animal';
}
Animal.prototype.sayType = function() {
console.log('I am a ' + this.type);
};
function Dog(name, age) {
Animal.call(this);
this.name = name;
this.age = age;
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
var dog1 = new Dog('Lucky', 2);
dog1.sayHello(); // 输出:"Hello, my name is Lucky"
dog1.sayType(); // 输出:"I am a animal"
在这个例子中,我们定义了一个 Animal 类,其中有一个 sayType 方法。然后我们定义了一个 Dog 类,它继承自 Animal,同时还有一个 sayHello 方法。我们使用 Object.create 方法来创建 Dog 的原型,使其继承自 Animal 的原型。最后,我们用 Dog 的原型替换掉了原来的原型,这样,Dog 就拥有了 Animal 的所有属性和方法,并且还能添加自己的属性和方法。
// 原型方法
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', 30);
var person2 = new Person('Jane', 25);
person1.sayHello(); // 输出:"Hello, my name is John"
person2.sayHello(); // 输出:"Hello, my name is Jane"
// 实例方法
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
}
var person1 = new Person('John', 30);
var person2 = new Person('Jane', 25);
person1.sayHello(); // 输出:"Hello, my name is John"
person2.sayHello(); // 输出:"Hello, my name is Jane"
在这个例子中,我们定义了一个 Person 类,可以将 sayHello 方法定义在原型上,也可以将其定义在实例上。如果将其定义在原型上,那么所有的实例都可以使用该方法;如果将其定义在实例上,那么每个实例都有自己的该方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.sayHelloToAll = function(people) {
people.forEach(function(person) {
console.log('Hello, ' + person.name);
});
};
var person1 = new Person('John', 30);
var person2 = new Person('Jane', 25);
Person.sayHelloToAll([person1, person2]); // 输出:"Hello, John" 和 "Hello, Jane"
在这个例子中,我们定义了一个 Person 类,同时也定义了一个静态方法 sayHelloToAll,它可以接受一个 Person 实例的数组,并向每个 Person 实例打招呼。该方法是定义在 Person 类本身上的,而不是定义在实例上的方法。