JavaScript 原型学习总结


Posted in Javascript onOctober 29, 2010

每个对像都有一个隐慝的属性用于指向到它的父对像(构造对像的函数)的原型(这里称为父原型或隐式原型),并从中继承它的属性和方法 [函数对像除了父原型引用外,还有一个显式的原型引用],在一般情况下,对像的父原型是不可以访问的,而函数对像的显式原型可以通过FunctionName.prototype进行访问 [在FireFox中你可以通过对像的__proto__属性来访问对像的父原型]

这个原型属性本身又是一个Object类型的对像,因此可以给这个原型属性添加任意的属性和方法 让实例对像来继承它们

如: 一个String类型的对像的原型为String.prototype,如果我们想要给String类型的对像添加一些自定义的方法,那我们可以这样来实现(这里以添加一个类式VBscript中的trim方法为例)

String.prototype.trim=function(){ 
return this.replace(/^\s*|\s*$/g,"") 
} 
// " jiangsk540 ".trim();//return "jiagnsk540"

原型除了提供以上的特性之外,它还提供了一群同类实例对像共享属性和方法的机制 [也就相当于静态属性或静态函数,无论用构造函数创建了多少个实例对像,在原型上定义的属性和方法从头到尾只定义了一次,所有实例对像都共享使用这一个属性或方法 但并非和C++或JAVA的静态属性或静态函数的概念相同]
function Class1(name){ 
this.name = name; 
} 
Class1.prototype.show=function(){ 
alert("name="+this.name); 
} 
var m1 = new Class1("jiangsk540"); 
var m2 = new Class1("毛狮子"); 
alert(m1.show===m2.show);//显示 true

动态给构造函数原型添加的属性或方法即可被先前建立的对像立即调用

function Class1(name){ 
this.name = name; 
} 
Class1.prototype.show=function(){ 
alert("name="+this.name); 
} 
var m1 = new Class1("jiangsk540"); 
Class1.prototype.say=function(){ 
alert("Hi"); 
} 
m1.say()//调用成功 
/* 
注意:只有为构造函数的原型添加的属性或方法才能被已经创建的对像立即调用 
如果是改变构造函数原型的引用那么就不能被已经创建的对像立即调用 
*/ 
Class1.prototype={newP:"jiangsk540"}; 
alert(m1.newP)//undefined
Javascript 相关文章推荐
javascript cookies 设置、读取、删除实例代码
Apr 12 Javascript
js里的prototype使用示例
Nov 19 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
css+js实现部分区域高亮可编辑遮罩层
Mar 04 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
May 19 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
Vue 幸运大转盘实现思路详解
May 06 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
微信小程序缓存支持二次开发封装实现解析
Dec 16 Javascript
用JQuery调用Session的实现代码
Oct 29 #Javascript
基于jquery 的一个progressbar widge
Oct 29 #Javascript
JQuery开发的数独游戏代码
Oct 29 #Javascript
Web前端设计模式  制作漂亮的弹出层
Oct 29 #Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 #Javascript
jQuery.ajax 用户登录验证代码
Oct 29 #Javascript
Jquery Autocomplete 结合asp.net使用要点
Oct 29 #Javascript
You might like
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
js表头排序实现方法
2015/01/16 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
原生javascript移动端滑动banner效果
2017/03/10 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
使用python绘制常用的图表
2016/08/27 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
单位实习证明怎么写
2014/01/17 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
总经理任命书范本
2014/06/05 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
小学生差生评语
2014/12/29 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
档案管理员岗位职责
2015/02/12 职场文书
2015入党自传书范文
2015/06/26 职场文书
研讨会致辞
2015/07/31 职场文书
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python