原文地址:http://www.cnblogs.com/allenxing/p/3527654.html
荒废了好几天,在宿舍闷了几天了,一直想着回家放松,什么也没搞,论文就让老师催吧。不过,闲的没事干的感觉真是不好,还是看看书,写写博客吧,今天和大家说说函数的原型。
原型是什么
第一次看到这个的时候,没太理解这个概念,其实也就是一个概念呗,没啥神秘的。书上说每个函数都有一个prototype属性(原型属性),这个属性是一个指针,指向一个对象(原型对象),这个对象包含这个函数创建的实例的共享属性和方法。也就是说原型对象中的属性和方法是所有实例共享的,打住,那我们就先创建一个函数看看,原型是什么东东
var test = function(){} console.log(test.prototype);//Object {}
看来,是这的有这么一个属性,可以看出是一个对象,但是默认的是一个空的对象,既然是一个对象,那我们就可以给它添加属性和方法喽,试试看
var test = function (){} test.prototype.name = "hainan"; test.prototype.age = "25"; test.prototype.getName = function(){console.log(this.name);} console.log(test.prototype);//Object {}
我们成功的添加了属性和方法,骄傲吧,对象中的属性一会我们在解释,现在看看我们修改之后的原型对象,有啥用呢?刚才我们说过,原型对象中的属性和方法是这个函数new出来实例所共享的,那我们就new实例出来试试
var test = function test(){} test.prototype.name = "hainan"; test.prototype.age = "25"; test.prototype.getName = function(){console.log(this.name);} console.log(test.prototype);//Object {} var o1 = new test(); console.log(o1.getName()); console.log(o1.name); var o2 = new test(); console.log(o2.getName()); console.log(o2.name);