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 相关文章推荐
jQuery插件pagination实现分页特效
Apr 12 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
javascript canvas检测小球碰撞
Apr 17 Javascript
javascript 使用sleep函数的常见方法详解
Apr 26 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
Oct 22 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
程序员编程十条戒律
2009/07/09 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript函数详解
2015/02/27 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python多维数组切片方法
2018/04/13 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python迭代器常见用法实例分析
2019/11/22 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
综合素质的自我鉴定
2013/10/07 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
费城故事观后感
2015/06/10 职场文书
宣传部部长竞选稿
2015/11/21 职场文书