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 相关文章推荐
js 提交和设置表单的值
Dec 19 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
js/jQuery对象互转(快速操作dom元素)
Feb 04 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
JS中自定义定时器让它在某一时刻执行
Sep 02 Javascript
超详细的JS弹出窗口代码大全
Apr 18 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
Aug 27 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
vue中格式化时间过滤器代码实例
Apr 17 Javascript
微信小程序引入VANT组件的方法步骤
Sep 19 Javascript
实例讲解JavaScript 计时事件
Jul 04 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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 结果集的分页实现代码
2009/03/10 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
php session劫持和防范的方法
2013/11/12 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
python实现多进程代码示例
2018/10/31 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
幼儿园秋游活动方案
2014/01/21 职场文书
产品销售计划书
2014/05/04 职场文书
法人代表资格证明书
2015/06/18 职场文书
个人欠条范本
2015/07/03 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
创业计划书之餐饮
2019/09/02 职场文书
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL