javascript原型模式用法实例详解


Posted in Javascript onJune 04, 2015

本文实例讲述了javascript原型模式用法。分享给大家供大家参考。具体分析如下:

一般在了解了工厂模式和构造函数模式的弊端之后,就知道为什么需要原型模式了
 
原型模式i的定义:每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。比如在构造函数模型中sayInformation()方法,如果声明两个实例就要构造两次sayInformation方法,但是声明两次是没有必要的,这就是为什么有原型模式的出现(尼玛,网上那些博客上面都是扯谈的东西,还是看书讲的容易理解),sayInformation()声明为原型模式之后,实例就共享了,就没有必要声明两次了

function Person(){}
Person.prototype.name="jack";
Person.prototype.age=10;
Person.prototype.sayInformation=function()
{
  console.log("my name is"+this.name+" age is"+this.age);
}
var person1 = new Person();
person1.sayInformation();
console.info(person1.name);
//来自原型的属性name
person1.name="Greg";
//修改实例的name属性
console.info(person1.name);
//来自实例的属性name
delete person1.name ;
//来自实例的属性,这里删除的是实例的属性,但是原型的属性依然存在
console.info(person1.name);
//来自原型的属性name
var person2 = new Person();
person2.sayInformation();
console.info(person1.hasOwnProperty("name"));
//hasOwnProperty检查属性是属于实例还是原型中,如果是实例中就返回true
console.info(person1.name==person2.name);
console.info(person1.sayInformation==person2.sayInformation);
console.info(person1.constructor);
//指向person1的构造函数
//原型更加简便的写法
function Person2(){}
Person2.prototype={
  name:"jack",
  age:29,
  sayInformationfunction:function()
    {
      console.log("my name is"+this.name+" age is"+this.age);
    }
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
图片连续滚动代码[兼容IE/firefox]
Jun 11 Javascript
JavaScript 设计模式学习 Factory
Jul 29 Javascript
JavaScript iframe的相互操作浅析
Oct 14 Javascript
js字符编码函数区别分析
Dec 28 Javascript
ajax请求乱码的解决方法(中文乱码)
Apr 10 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
Aug 12 Javascript
js获取checkbox值的方法
Jan 28 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
May 07 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
JavaScript实现左右滚动电影画布
Feb 06 Javascript
使用JavaScript刷新网页的方法
Jun 04 #Javascript
JavaScript中Cookies的相关使用教程
Jun 04 #Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 #Javascript
浅析JavaScript中的事件机制
Jun 04 #Javascript
JavaScript中指定函数名称的相关方法
Jun 04 #Javascript
JavaScript中Function()函数的使用教程
Jun 04 #Javascript
JavaScript中的函数嵌套使用
Jun 04 #Javascript
You might like
php学习之 认清变量的作用范围
2010/01/26 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
学生会个人总结范文
2015/02/15 职场文书
九年级历史教学反思
2016/02/19 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
Python实现滑雪小游戏
2021/09/25 Python
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python