javascript中的prototype原型学习指南_基础知识

javascript中的prototype原型学习指南_基础知识

ID:30777745

大小:124.11 KB

页数:9页

时间:2019-01-03

javascript中的prototype原型学习指南_基础知识_第1页
javascript中的prototype原型学习指南_基础知识_第2页
javascript中的prototype原型学习指南_基础知识_第3页
javascript中的prototype原型学习指南_基础知识_第4页
javascript中的prototype原型学习指南_基础知识_第5页
资源描述:

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

1、JavaScript中的prototype原型学习指原型是什么Function类型有一个屈性prototype,直接翻译过來就是原型。这个屈性就是一个指针,指向一个对彖,这个对象包含一些屈性和方法,这些屈性和方法会被当前函数生成的所有实例(对彖)所共享。这句话根据前面所说的,细细琢磨下来,就可以得到下面代码:functionPerson(){•••}Person.prototype={country:'china',sayName:function(){•••}}先创建了一个Function类型的实例person,然后person的方法p

2、rototype是一个对象,就声明指向了一个对象。这个对象里面的展性和方法,会被当前person函数生成的实例所共享。也就是说:personl二newPerson();person2二newPerson();pcrsonl和pcrson2都是通过Person这个Function类型实例,再次生成的实例,它们俩都有共同的属性country和方法sayName,因为它们都有某个指针(—proto_),直接指向Person,prototype所指向的对象。不过要注意—proto_这个指针是不标准的,只有Chrome和Firefox等浏览器自己定

3、义的,实际中,也不会用到这个属性,只是作为理解prototype來用:>personl._proto_►Object{country:usajdflja11,sayName:function}>person2._proto_►Object{country:ltsajdflja11,sayName:function}>personl._proto_==person2._proto_true>personl._proto_==Person.prototypetrue>关于原型等用法,后面会更具体的讲到。创建对象的模式卜•面,我们就來看卜•创建

4、对象的方法和常用模式,以及它们Z间的优缺点。1.工厂模式就像工厂一样,抽彖了创建具体对象的过程,用函数来封装以特定接口创建对象的细节。通过使用函数代替部分重复工作,代码如下:functioncrcatcPcrson(name,age,job){varo=newObject();o.name=name;o.age二age;o.job二job;o.sayNamc=function(){alert(this・name);};returno;}varpersonl=crcatcPcrson(,zjiangshui","22","cnginccr〃

5、);这样就创建岀来了一个人,工厂模式解决了多个相似对象重复创建问题,但是没有解决对象识别问题。只是单纯的创建了一个对象,而不管这个对象是从人类模版还是动物模版创建的,无法区分这个对象的类型。2.构造函数模式创建一个口定义的构造函数,从而定义口定义对象类型的屈性和方法。functionPerson(name,age,job){this.name二name;this.age二age;this・job=jpb;this・sayNamc=function(){alert(this・name);};};varpersonl二newPerson(..

6、.);1.构造函数模式与工厂模式区别:•没有显式的创建对象。•肓接将属性和方法赋值this对象。•没有return语句。Person是Function类型的对象,new之后,会继续产生一个对象,但这个新产生的对象,由于在函数中传递进去参数,并赋值给了this指针,那么传递进去的内容,就变成了新产生对彖的屈性或方法。构造函数默认习惯是首字母大写,上面代码执行经丿力了下面儿个步骤:•创建一个新对象•将构造函数作用域赋值给新对彖•执行构造函数中的代码•返回新对象这样生成的实例中,都默认包含一个constructor属性指向构造函数,例如:ale

7、rt(personl.constructor==Person);所以用构造函数模式,冇类型的区分,可以将它的实例标识为一种特定的类型。此外,构造函数就是普通的函数,因为要反馈得到新对彖,所以用new来调用。如果不用的话,直接执行就跟普通函数一样,例如上面,执行Person.sayName()会弹出window,name,因为函数在window下面执行,所以this指向window。构造函数模式也是有缺陷的,构造函数模式里面的方法,在每个实例上都重新创建了一遍,因此不同实例上的同名函数是不相等的。例如:personl.sayName==pe

8、rson2.sayName;//false也就是说,由构造函数生成的每个对彖实例,屈性和方法都是独冇的,都是复制了一遍。属性独有是必须的,因为这正是对象之间不同的地方,但是很多方法功能和代码都

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

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

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