原型prototype
- 原型的定义: 原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过改构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。
- 利用原型特点和概念,可以提取共有属性。将一类对象的共有属性提取出来,放到该类对象的原型中,从而不需要每次用new操作符时都重新定义一遍该共有属性。
如下,定义一个Person构造函数,而属于Person多构造对象共有的属性方法,则定义到Person的原型中
Person.prototype = {
eat: function (food) {
console.log('I have eated ' + food);
},
sleep: function () {
console.log("I am sleeping");
}
}
// 人的构造函数
function Person (name, age) {
this.name = name;
this.age = age;
}
var person1 = new Person('lyl', 18);
console.log(person1.name); //lyl
person1.eat('apple'); //I have eated apple
只有构造函数
// 人的构造函数
function Person(name, age) {
this.name = name;
this.age = age;
}
console.log(Person.__proto__); //function ()
console.log(Person.prototype); // Object { … }
console.log(Person.constructor); // function Function()
console.log(Person.constructor.prototype); // function ()
有构造函数和原型
// 人的原型
Person.prototype = {
eat: function(food) {
console.log('I have eated ' + food);
},
sleep: function() {
console.log("I am sleeping");
}
}
// 人的构造函数
function Person(name, age) {
this.name = name;
this.age = age;
}
console.log(Person.__proto__); //function ()
console.log(Person.prototype); // Object { eat: eat(), sleep: sleep() }
console.log(Person.constructor); // function Function()
console.log(Person.constructor.prototype); // function ()