?????????? 在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();
??? })()
运行结果:
?
?
这只是简单的继承方式,其它的继承方式就不在这里累赘了
原文:http://814108660.iteye.com/blog/2267837