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 浏览器判断实现函数
Aug 20 Javascript
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
Feb 22 Javascript
js代码验证手机号码和电话号码是否合法
Jul 30 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
js获取当前时间(昨天、今天、明天)
Nov 23 Javascript
js css自定义分页效果
Feb 24 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
微信小程序 开发之全局配置
May 05 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 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/05/07 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
使用Python对MySQL数据操作
2017/04/06 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
PyQt5实现简单的计算器
2020/05/30 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
应届生污水处理求职信
2013/11/06 职场文书
酒店副总岗位职责
2013/12/24 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2014年纪检工作总结
2014/11/12 职场文书
个人总结格式范文
2015/03/09 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
七年级作文之下雨天
2019/12/23 职场文书