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类和继承 constructor属性
Mar 04 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
Aug 23 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
vue移动UI框架滑动加载数据的方法
Mar 12 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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面向对象public private protected 访问修饰符
2013/06/30 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
Python实现完整的事务操作示例
2017/06/20 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python中的__init__作用是什么
2020/06/09 Python
Python将字典转换为XML的方法
2020/08/01 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
公司租房协议书范本
2014/10/08 职场文书
实习科室评语
2015/01/04 职场文书
储备店长岗位职责
2015/04/14 职场文书
摩登时代观后感
2015/06/03 职场文书
Mysql 一主多从的部署
2022/05/20 MySQL
python数字图像处理之图像的批量处理
2022/06/28 Python