- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
javascript原型与原型链
学习javascript原型与原型链原理,能够更深入的理解javascript数据类型的使用;在往后的程序开发过程中能够有效的利用javascript编程语言的特点,编写出高效率的程序。
一般情况下编写javascript程序,创建对象的抒写方式是
script language=javascript type=text/javascript
var user={
name:小红,
age:12
};
/script
function max(a1,a2){
if(a1a2){
return a1;
};
return a2;
};
var max=function(a1,a2){
if(a1a2){
return a1;
};
return a2;
};
function User(name,age){
this.name=name;
this.age=age;
};
使用 new 关键字来创建 User 函数对象的实例化对象:
如果不涉及js面向对象编程的概念,正常意义上的this关键字所代表的其实是window对象,自定义的变量,函数都隶属于window对象。
通过new关键字能够新创建内存空间,所自定义的变量和函数都隶属于当前操作对象,不隶属于window对象。
例如:
var user1=new User(小红,23);
var user2=new User(小明,24);
user1和user2两个变量同时都使用User函数对象初始化,其中的数据(小红,小明)都各自保存在自己内存空间的name变量中。
user1.name; //小红
user2.name; //小明
所谓普通对象是通过 new 关键字使用函数对象创建出来的变量都是普通对象,如:
var user1=new User(小红,23);
//user1 就是普通对象
那么还有一种对象是如下的定义方式,我们会有疑问这种对象并没有使用new 关键字?
var test={
name:小明, sex:女
};
其实这种对象也是通过new 关键字创建的,属于系统隐含创建,其使用的函数对象是系统默认的:
function Object(){ }
系统应该是这样隐含定义的:
var user=new Object();
为什么能够推理出 自定义对象 {} 是由Object 函数对象初始化的呢?这就要引入我们的主题:原型与原型链
原型
javascript中所有的函数对象都具有一个原型实例,所谓原型就是这个函数对象是由哪个函数对象的实例产生的。
//我们可以使用 全等符号 === 来测试函数对象中原型的存在:
函数对象获取原型对象:
function User(name,age){
this.name=name;
this.age=age;
};
User.prototype //prototype 即返回原型对象。
function User(){
};
var user1=new User();
User.prototype=user1;
User.prototype.constructor=User;
系统默认的prototype,就是函数对象自己,使用 new 关键字产生的普通对象。
注意:prototype.constructor 构造器所指向的一般是函数对象自己,用于当程序运行时使用 new 关键字创建对象时,根据constructor调用;如果prototype 被使用 new 赋值过其他函数对象,则constructor会被清空,需要重新为constructor赋值。
普通对象也可以获取原型对象,用以说明这个这个普通对象是由哪个函数对象创建的:
var user1=new User();
user1.__proto__
说明:__proto__ 用于指向创建user1的函数对象(User)的原型对象(prototype)。
测试:
function User(name,age){
this.name=name;
this.age=age;
};
var user1=new User(小红,23);
window.alert(user1.__proto__===(User.prototype) ); //弹出 true
function Job(job,level){
this.job=job;
this.level=level;
this.dis=function(){
var str=;
str+=\n工作:+this.job;
str+=\n职位:+this.level;
return str;
};
};
function User(name,sex){
您可能关注的文档
- Hadoop及大数据:一个数据库学者的解读.pdf
- 电子商务 第二篇.ppt
- 电子商务安全及数据加密技术研究.doc
- HAL简介及开发应用程序.ppt
- HERO型移动机器人控制器的研制与开发.pdf
- 电子商务安全技术 第03章 信息加密技术及应用.ppt
- HH神总结线段树专辑_超经典.pdf
- Hibernate 一级缓存及多表关联与操作缓存.pdf
- hibernate——一对一、多对一与多对多关系的比较.doc
- 电子商务平台和核心技术复习题.doc
- 小学科学课中太阳能利用与节能教育的结合教学研究课题报告.docx
- 2025年过氧化钠项目详细风险分析及评估报告.docx
- 化学物质的光谱分析研究教学研究课题报告.docx
- 小学数学启蒙教学中的游戏化教学策略研究教学研究课题报告.docx
- 初中英语核心素养培育与英语口语交际教学研究教学研究课题报告.docx
- 八年级数学上册单元速记·巧练(人教版)-第十一章 三角形单元复习提升(易错与拓展)(原卷版).docx
- 铁路货运组织培训.pptx
- 小学语文阅读课堂中古代文学对学生文学阅读能力的提升研究教学研究课题报告.docx
- 《中国行政区划分》课件.ppt
- 高中化学实验中概率统计方法的实际运用研究教学研究课题报告.docx
文档评论(0)