JavaScript之prototype
2015-09-07 22:29
471 查看
在JavaScript中,有一些对象的属性或者方法是共有的,也就是说每个对象都拥有相同的某个属性或方法并且是不变的,那么如果把这个属性或方法放在对象函数中,就会极大的浪费内存空间,这是因为每当你创建一个对象这个方法或属性都会每创建一次,所以我们很自然的就会想到将这个属性或方法放在一个特定的代码段上。当属性或者方法被放在代码段上时,那么这个属性或方法只会被创建一次,并且它的生命周期从被创建一直到浏览器被关闭。而要完成这些就要用到一个原型方法下面我们来看一些代码:
![](http://img.blog.csdn.net/20150907224317901?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150907224331320?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150907224343217?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下面我们来看一下在代码段上的方法的生命周期。
![](http://img.blog.csdn.net/20150907224810192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150907224331320?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150907224343217?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
从第一个结果我们可以卡到在我们删除name这个属性后,当想再次打印name的值时,浏览器给我们的反应是name这个属性未定义。这是因为我们删除了这个属性。但是在我们尝试删除play()这个方法并且打印结果时会发现play()这个方法并没有被删除。这足以证明原型方法的生命周期是从被创建一直到浏览器被关闭。
<Script> function car(name, speed, price) { this.name = name; this.speed = speed; this.price = price; this.match = function() { alert("全球最快没有之一"); }; } //这个方法就是被放在代码段上的方法 car.prototype.play = function() { alert("下场比赛对决兰博基尼"); }; var car1 = new car("柯塞尼格","500km/h","$2010200000"); alert(car1.name); car1.match(); delete car1.play; car1.play(); </Script>运行结果是:
下面我们来看一下在代码段上的方法的生命周期。
<Script> function car(name, speed, price) { this.name = name; this.speed = speed; this.price = price; this.match = function() { alert("全球最快没有之一"); }; } car.prototype.play = function() { alert("下场比赛对决兰博基尼"); }; var car1 = new car("柯塞尼格","500km/h","$2010200000"); //删除name这个属性 delete car1.name; alert(car1.name); car1.match(); //尝试删除play这个方法 delete car1.play; car1.play(); </Script>运行结果:
从第一个结果我们可以卡到在我们删除name这个属性后,当想再次打印name的值时,浏览器给我们的反应是name这个属性未定义。这是因为我们删除了这个属性。但是在我们尝试删除play()这个方法并且打印结果时会发现play()这个方法并没有被删除。这足以证明原型方法的生命周期是从被创建一直到浏览器被关闭。
相关文章推荐
- js事件知识回顾
- JavaScript之对象的遍历
- Javascript邮箱增删
- javascript输入验证
- 【h5-egret】js加载成第三方库
- 利用js实现简单计算器
- JavaScript学习笔记7-附录(回掉函数)
- Hello JSP!——动作元素基础练习题
- JSP/Servlet-----JSTL之I18N formatting标签库
- 用ArcGIS API for JavaScript在地图上绘制圆多边形
- json解析
- fastJSON
- JSON 解析
- javascript 构造函数内return 解析
- JS获取汉字首字母
- JSon
- Hello JSP!——<jsp:plugin>、<jsp:params>、<jsp:fallback>动作元素篇
- javascript写的简单的计算器,附加界面、代码,方法实用
- Velocity.js实现动画序列的三种方法
- [RxJS] Aggregating Streams With Reduce And Scan using RxJS