javascript中的原型prototype完全解析_基础知识

javascript中的原型prototype完全解析_基础知识

ID:30778862

大小:258.48 KB

页数:7页

时间:2019-01-03

javascript中的原型prototype完全解析_基础知识_第1页
javascript中的原型prototype完全解析_基础知识_第2页
javascript中的原型prototype完全解析_基础知识_第3页
javascript中的原型prototype完全解析_基础知识_第4页
javascript中的原型prototype完全解析_基础知识_第5页
资源描述:

《javascript中的原型prototype完全解析_基础知识》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaScript中的原型prototype完全解析要理解JS中的prototype,首先必须弄清楚以下几个概念1.JS小所有的东西都是对彖2.JS中所冇的东西都由Object衍生而来,即所冇东西原型链的终点指向Object,prototype//["constructor","toString〃,z,toLocalcString〃,"valucOf",^hasOwnProperty^,"isPrototypeOf,z,//,zpropertyIsEnumerable,z,"―defineGetter_”

2、,"―lookupGetter_"—defineSetter_“,//"_lookupSetter_“]console,log(Object・gctOwnPropcrtyNamcs(Object・prototype));3.JS中构造函数和实例(对象)之间的微妙关系构造函数通过定义prototype來约定其实例的规格,再通过new來构造出实例,他们的作用就是生产对象.而构造函数(方法)本身又是方法(Function)的实例,因此也可以查到它的―proto—(原型链)Object/functionF(){}这

3、样子的就是构造函数啦,一个是JS原生API提供的,一个是自定义的newObject()/newF()这样子的就是实例啦实例就〃只能〃查看—proto—來得知自己是基于什么prototype被制造出來的,而〃不能"再重新定义实例的prototype妄想创造出实例的实例了.实践出真知,只有自己动手观察/思考才能真正领悟://先來看看构造函数到底是什么//functionEmpty(){}functionEmpty(){}console.log(Function.prototype,Function._proto

4、―);//Object{}functionEmpty(){}console,log(Object,prototype,Object._proto_);functionF(){}//F{}functionEmpty(){}console.log(F.prototype,F._proto―);你可能已经晕了,我们来分解一下。prototypeprototype输岀的格式为:构造函数名原型首先看下Object,prototype输川了什么?Object{}->前面的Object为构造函数的名称,后面的那个表示原型

5、,这里是一个{},即一个Object对彖的实例(空对彖)那么F{}我们就明白是什么意思了,F就是构造函数的名称,原型也是一个空对象//再來看看出构造函数构造出來的实例varo=newObject();//varo={};//undefinedObject{}console,log(o.prototype,o._proto—);functionF(){}vari二newF();//undefinedF{}console・log(i.prototype,i._proto—);我们再深入一点,定义下F的原型看看到

6、底会发生些什么?functionF(){}F.prototype,a=function(){};vari二newF();//undefinedF{a:function}console・log(i.prototype,i.__roto_);这样我们就清楚的看到i是由F构造岀来的,原型是{a:function},就是原本的空对象原型新增了一个a方法我们再换一种情况,完全覆盖F的原型会怎么样?functionF(){}F.prototype={a:functionO{}};vari=newF();//undefi

7、nedObject{a:function}console.log(i.prototype,i・_proto—);咦~为什么这里表明i是由Object构造岀来的?不对吧!因为我们完全将F的prototype覆盖,其实也就是将原型指定为对彖b:function),但这会造成原木的constructor信息丢失,变成了对象{a:function}指定的constructor.那么对象{a:function}的constructor是什么呢?因为对象4:function}其实就相对于varo二{a:function

8、(){}}//new了一个Object那么o的constructor当然是Object啦我们來纠正下这个错误functionF(){}F.prototype二{a:function(){}}//重新指定正确的构造函数F.prototype,construetor=F;vari二newF();//undefinedF{a:function,constructor:function}console.log(i.pro

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

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

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