javascript原型与原型链

javascript原型与原型链

ID:8799886

大小:50.50 KB

页数:6页

时间:2018-04-08

javascript原型与原型链_第1页
javascript原型与原型链_第2页
javascript原型与原型链_第3页
javascript原型与原型链_第4页
javascript原型与原型链_第5页
资源描述:

《javascript原型与原型链》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、javascript原型与原型链学习javascript原型与原型链原理,能够更深入的理解javascript数据类型的使用;在往后的程序开发过程中能够有效的利用javascript编程语言的特点,编写出高效率的程序。一般情况下编写javascript程序,创建对象的抒写方式是varuser={name:"小红",age:"12"};学习原型之前需要普及几个js数据类型知识;javascript中所谓的对象,也就是常规意义上的

2、变量;对象分为函数对象和普通对象两种。首先来介绍一下函数对象,以下三种均为函数对象,其实就是函数;重点要注意的是第三种函数的定义方式,如果函数体内部使用了this关键字说明这个函数需要使用new关键字声明对象使用的,有些像java和面向对象中的类的概念。functionmax(a1,a2){if(a1>a2){returna1;};returna2;};varmax=function(a1,a2){if(a1>a2){returna1;};returna2;};functionUser(name,age){this.name=name;this

3、.age=age;};使用new关键字来创建User函数对象的实例化对象:如果不涉及js面向对象编程的概念,正常意义上的this关键字所代表的其实是window对象,自定义的变量,函数都隶属于window对象。通过new关键字能够新创建内存空间,所自定义的变量和函数都隶属于当前操作对象,不隶属于window对象。例如:varuser1=newUser("小红","23");varuser2=newUser("小明","24");user1和user2两个变量同时都使用User函数对象初始化,其中的数据(小红,小明)都各自保存在自己内存空间的na

4、me变量中。user1.name;//小红user2.name;//小明所谓普通对象是通过new关键字使用函数对象创建出来的变量都是普通对象,如:varuser1=newUser("小红","23");//user1就是普通对象那么还有一种对象是如下的定义方式,我们会有疑问这种对象并没有使用new关键字?vartest={name:"小明",sex:"女"};其实这种对象也是通过new关键字创建的,属于系统隐含创建,其使用的函数对象是系统默认的:functionObject(){}系统应该是这样隐含定义的:varuser=newObject()

5、;为什么能够推理出自定义对象{}是由Object函数对象初始化的呢?这就要引入我们的主题:原型与原型链原型javascript中所有的函数对象都具有一个原型实例,所谓原型就是这个函数对象是由哪个函数对象的实例产生的。//我们可以使用全等符号===来测试函数对象中原型的存在:函数对象获取原型对象:functionUser(name,age){this.name=name;this.age=age;};User.prototype//prototype即返回原型对象。系统默认的prototype是这样的:functionUser(){};varus

6、er1=newUser();User.prototype=user1;User.prototype.constructor=User;系统默认的prototype,就是函数对象自己,使用new关键字产生的普通对象。注意:prototype.constructor构造器所指向的一般是函数对象自己,用于当程序运行时使用new关键字创建对象时,根据constructor调用;如果prototype被使用new赋值过其他函数对象,则constructor会被清空,需要重新为constructor赋值。普通对象也可以获取原型对象,用以说明这个这个普通对象

7、是由哪个函数对象创建的:varuser1=newUser();user1.__proto__说明:__proto__用于指向创建user1的函数对象(User)的原型对象(prototype)。测试:functionUser(name,age){this.name=name;this.age=age;};varuser1=newUser("小红","23");window.alert(user1.__proto__===(User.prototype));//弹出true注意:属性__proto__在IE浏览器中获取不到,但是功能实现的意义存在

8、。继承的实现下面的例子阐述了如何使用prototype实现javascript继承;示例描述:创建了一个Job函数对象,User函数对象,使一个普通用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。