欢迎来到天天文库
浏览记录
ID:8799886
大小:50.50 KB
页数:6页
时间:2018-04-08
《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函数对象,使一个普通用
此文档下载收益归作者所有