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数组去重问题
Nov 06 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
微信小程序 删除项目工程实现步骤
Nov 10 Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
Apr 28 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
vue移动端下拉刷新和上滑加载
Oct 27 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 和 MySQL 时区的一点总结
2008/03/26 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php不写闭合标签的好处
2014/03/04 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
中专生毕业自我鉴定
2013/11/01 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
给老婆的保证书范文
2014/04/28 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
写给老师的感谢信
2015/01/20 职场文书
离婚协议书样本
2015/01/26 职场文书
八达岭长城导游词
2015/01/30 职场文书
小学新教师个人总结
2015/02/05 职场文书
统计员岗位职责范本
2015/04/14 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL