在JavaScript中,prototype对象是js实现面向对象的重要机制。
每一个函数对象都有一个prototype属性,这个属性是指向对象的引用,称之为原型对象。原型对象相当于函数对象的影像,它会把函数对象的属性和方法复制一份。供new构造对象共享这份影像。使用new时浏览器会给对象加上一个_proto_属性指向prototype对象。首相来看下面这段代码
(function(){
var Person = function () {
this.name = 'zhangsan';
this.work = function () {
console.log('work by leg');
}
}
Person.prototype.age = function(){}
var person1 = new Person();
console.log(person1);
})()
定义了一个person对象,使用firebug查看运行结果如下:
我们可以看到对象实例化时会有一个_proto_属性指向prototpe对象。到这里是不是能想到js继承是怎么实现的了吧。
(function(){
var Person = function () {
this.name = 'zhangsan';
this.work = function () {
console.log('work by leg');
}
}
Person.prototype.age = function(){
console.log('Person age is 20');
}
var Person1 = function(){
}
Person1.prototype = new Person();
var person1 = new Person1();
console.log(person1);
console.log(person1.name);
person1.age();
})()
运行结果:
这只是简单的继承方式,其它的继承方式就不在这里累赘了