28-JavaScript闭包_原型链继承.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Javascript巩固与加强目录Javascript巩固与加强1一、Object类21、Object类是所有类的基类22、使用Object类创建自定义对象时可以无需指定构造函数4一、Object类在Javascript中,Object类是所有类的基类(父类),使用Object类创建自定义对象时可以无需指定构造函数。1、Object类是所有类的基类1)原型对象当系统加载构造函数时,系统会自动创建一个原型对象,两者之间在内存是相互独立的,但是在构造函数的内部存在一个prototype的属性指向了原型对象,同时在原型对象中也存在一个属性叫做constructor属性其指向了构造函数。2)原型对象的作用当Person构造器的实例化对象p1访问一个存在的属性或方法时,系统会自动到原型对象中去寻找该属性。原理图:案例应用:扩展数字类的功能:为一个数字对象添加一个方法,该方法的参数为任意数目的整数,然后将所有参数累加到一起,并返回要用到的知识点:在所有函数的内部都存在一个特殊的对象(类数组的特殊对象),叫做arguments,可以返回所有传递的参数列表(类数组形式),该对象只能通过for循环进行遍历输出。3)原型对象从何而来运行发现:弹出object,所以其也是一个对象,既然是一个对象,其必然由某个类实例化得到的。在创建所有原型对象时,系统会自动执行以下代码:类名.prototype = new Object();4)原型继承p1对象访问一个不存在的属性或方法时会自动去原型对象中去寻找,又由于原型对象都是Object实例化而来的,所以原型对象会自动继承Object类中的所有属性和方法,所以可以得出结论:p1对象也会自动继承Object类中所有属性和方法,我们把这种继承关系就称之为叫做“原型继承”。2、使用Object类创建自定义对象时可以无需指定构造函数我们创建对象的最根本目的是为了保存更多的数据,但是为了创建一个对象就不得不定义一个构造函数,即使它是空的,也需要定义。如果我们只是想得到一个对象而不关心其是哪个类的实例,可以使用Object来创建自定义对象。二、静态属性与静态方法在有些面向对象的编程语言中,可以使用static关键词来定义静态属性,这一点,在Javascript可以通过“模拟”的方式来实现。1、提出问题在实际开发时,什么样的属性应该声明为实例属性什么样的属性应该声明为静态属性?答:静态属性并不属于某个具体的对象,静态属性又是公有的,这样的属性就可以声明为静态属性class Person {public $name;public $age;public $address;//静态属性static $count; //班级的总人数}2、静态属性的定义静态属性 = 类名.属性在系统类Math数学类下,其下面的所有属性和方法都是静态的,所以在访问时都是:Math.属性例1:通过静态属性模拟一个计数系统,可以实现人数的统计例2:改进例1,实现自动计数功能3、静态方法在php中,可以在函数的前面加一个static关键词代表静态方法,其主要用于操作静态属性。在Javascript中可以通过模拟的形式来定义静态方法,基本语法:类名.属性 = function() {}例3:改进例2,实现通过静态方法操作静态属性。三、函数闭包1、什么是函数闭包所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。2、闭包的作用1)可以让我们在全局作用域中访问局部变量2)可以让局部变量一直驻留在计算机内存中例1:在全局作用域中访问局部变量说明:报错,报变量i未定义,主要原因有二:① 作用域不允许② 受到Javascript垃圾回收机制的影响3、Javascript垃圾回收机制引用计数器:默认其值为0,当全局作用域中有变量对其引用时,其计数器自动进行+1操作,当垃圾回收机制运行时,系统会自动判断引用计数器,如果该值为0,自动回收。4、实现引用局部变量运行结果:弹出hello字符串,为什么函数display在执行完毕后,其内部的变量没有被回收?答:首先在第10到18行代码,系统首先在内存中定义了一个display函数,然后根据顺序结构继续向下执行,执行到第21行,执行display函数并把函数的返回值赋值给func这个全局变量,display函数的返回值是fn函数在内存中的首地址,所以相当于func这个全局变量应用了fn的首地址,其内部的引用计数器会自动进行+1操作,当函数执行完毕后,其fn并不会被回收,所以当我们再次执行func这个全局变量时时,系统会自动执行fn函数,所以可以正常输出。改进上题:如下图所示:以上程序的运行结果可能有二:1)弹出10,fn函数对变量的引用是从定义时的环境为准2)

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档