位置: 编程技术 - 正文

JavaScript高级程序设计(第三版)学习笔记6、7章(javascript高级程序设计电子书)

编辑:rootadmin

推荐整理分享JavaScript高级程序设计(第三版)学习笔记6、7章(javascript高级程序设计电子书),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript高级程序设计最新版,javascript高级程序设计第六版,javascript高级程序设计电子版,javaScript高级程序设计,javaScript高级程序设计,javaScript高级程序设计,javaScript高级程序设计有几版,javascript高级程序设计pdf下载,内容如对您有帮助,希望把文章链接给更多的朋友!

第6章,面向对象的程序设计

对象:

1、数据属性

&#;configurable,表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true

enumerbale,表示能否通过for-in访问属性,默认true

&#;writable,表示能否修改属性值,默认true

&#;value,数据存储位置,默认undefined

修改默认属性特性:Object.defineProperty(),接收三个参数:属性所在对象,属性名,描述符对象,描述符对象属性必须是:configurable、enumerable、writable、value

例:

2、访问器属性

configurable,表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true

enumerbale,表示能否通过for-in访问属性,默认true

get,读取属性时调用,默认undefined

&#;set,写入属性时调用,默认undefined

修改必须通过Object.defineProperty()

例:

定义多个属性:Object.defineProperties(),接收两个对象,一是要修改和添加属性的兑现,第二个对象属性与第一个对象要修改或添加的属性一一对应,支持的浏览器:IE9+,FireFox4+,Safari5+,Opera+,chrome

读取属性:Object.getOwnPropertyDescriptor(),接收两个参数,属性所在对象,要读取描述符的属性名称,支持的浏览器:IE9+,FireFox4+,Safari5+,Opera+,chrome

创建对象:

工厂模式:

构造函数模式:

两种模式区别:

构造函数模式中不需要显示创建对象,对this直接赋值,没有返回语句

构造函数名首字母必须大写,必须使用new操作符创建新实例

原型模式

创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法,换句话就是,prototype就是通过函数创建的对象的原型对象,好处在于可以是所有实例共享相同的属性和方法。

isPrototypeOf(),个人理解就是可以用以判断某个实例的原型是否与当前原型相同

例:

Person.prototype.isPrototypeOf(person1); //true

Object.getPrototypeOf(),可以返回某个实例的原型,支持的浏览器IE9+,Firefox3.5+,Safari5+,Opera+,chrome

注:访问对象属性名时会进行一次搜索,先在实例对象搜索,不存在则到当前对象的原型对象去搜索。

注:实例中的属性若与原型对象中的属性一样,则会屏蔽原型对象的属性,与上一条刚好可以对的上

hasOwnProperty()方法可以确定某个属性是否来自实例,不是来自实例,则返回false,否则返回true

在实例上调用delete时,只会删除实例上的属性名,并不会删除原型的属性

例:

注:Object.getOwnPropertyDescriptor()方法只能用于实例属性,要取得原型属性描述符,必须直接在原型对象上调用本方法

in操作符:只有当属性在实例对象中或者在原型对象中时,返回true

JavaScript高级程序设计(第三版)学习笔记6、7章(javascript高级程序设计电子书)

例:

同时使用in和hasOwnProperty可以确定该属性是存在原型中,还是实例中

Object.keys()方法:接收一个对象作为参数,返回所有可枚举的属性组成的字符串数组

Object.getOwnPropertyNames()方法:接收一个对象,返回所有属性组成的字符串数组,无论是否可枚举

更简单的原型语法:

使用上述方法实在太麻烦了,更经常使用的是以下方法:使用对象字面量

不过,此方法,相当于重写了整个prototype对象,将导致constructor属性不再指向Person而是指向Object,虽然instanceof还是会返回正确的结果,但通过constructor已经不能确定对象类型了。

若constructor真的很重要,可以如下设置

以上写法会使constructor的enumerable特性被设置为true,默认情况下原生的是false的,在兼容ECMAScript5的浏览器可以使用Object.defineProperty()进行设置

注:重写原型对象,将会切断现有原型与任何之前已经存在的对象实例之间的联系

继承(难度较大,需再仔细研究)

使用原型链来实现

子类型要覆盖超类的方法,应该将给原型添加方法的代码放在替换原型之后,

注:通过原型链实现继承时,不能使用对象字面量创建原型方法,否则会重写原型链

借用构造函数

组合继承

原型式继承,Object.creat();接收两个参数:一是用作新对象原型的对象和(可选的)一个为新对象定义额外属性的对象

例:Object.creat(person,{name:{value:”greg”}});

寄生式继承

寄生组合式继承

第7章,函数表达式

创建方式:

1、函数声明,可以函数声明提升,就是可以把使用函数的语句放在函数声明之前

2、函数表达式,不能进行函数提升,也就是无法在函数创建前使用函数,在这种情况下创建的函数称为匿名函数,有时也叫拉姆达函数

严格模式下无法使用arguments.callee来实现递归,可以使用如下方式实现递归:

闭包(难度也不小)

闭包指有权访问另一个函数作用域中的变量的函数,闭包,也是一个函数

创建闭包的常见方式是在一个函数内部创建另一个函数

闭包只能取得包含函数即外部函数中任何变量的最后一个值。下例可以清晰说明问题

例:

每个函数返回的都将是,而不是如预期般返回对应的索引值,因为createFuncrions函数最后返回时I = ,此时每个函数都引用保存着变量i的同一个对象,所以在每个函数内部i都是,可以使用如下方法强制闭包返回预期效果:

每一个都会返回各自的索引值

模仿块级作用域

使用匿名函数可以模仿块级作用域:

使用闭包和私有变量的明显不足之处在于,会在作用域链中多查找一个层次,在一定程度上影响查找速度

函数中定义的变量可以在一定程度上称为私有变量,通过函数可以模拟出私有变量,静态私有变量

增强模块模式:

以上内容是小编给大家介绍的JavaScript高级程序设计(第三版)学习笔记6、7章,希望对大家有所帮助!

JavaScript获取客户端IP的方法(新方法) 很久以来,我都是经过

js仿百度登录页实现拖动窗口效果 在web开发中,鼠标拖拽效果非常常见,例如百度的登录页,点击登录会弹出一个窗口,并且这个窗口可以拖动;那么这样的拖拽效果如何实现呢?其实

javascript html5 canvas实现可拖动省份的中国地图 本文实例分享了html5canvas可拖动省份的中国地图实现方法,供大家参考,具体内容如下1.数据获取画地图需要省份边界坐标,理论上可以每次都用百度API

标签: javascript高级程序设计电子书

本文链接地址:https://www.jiuchutong.com/biancheng/377491.html 转载请保留说明!

上一篇:JavaScript高级程序设计(第三版)学习笔记1~5章(javascript高级程序设计pdf百度云)

下一篇:JavaScript获取客户端IP的方法(新方法)(js获取对象key的方式有哪些)

  • 诚信纳税的含义是什么
  • 视同销售是指什么
  • 暂估收入的必要条件
  • 发票没有纳税人识别号能开吗
  • 被告承担诉讼费用
  • 缴纳的增值税在资产负债表中怎么体现
  • 其他收益科目代码
  • 税务等级低有什么影响
  • 季度利润表格式
  • 增值税简易计税账务处理
  • 工业企业生产费用要素
  • 留底税款
  • 销售货物的运费增值税计入什么科目
  • 企业清算时卖了车怎么办
  • 公司向个人借入资金的风险
  • 商场销售化妆品应当缴纳增值税和消费税对吗
  • 加速折旧做账
  • 行政事业单位工会经费支出范围
  • 奖金用现金发放违法吗
  • 只开增值税普通发票,需要申报税务吗
  • 拿到农产品0税率的发票可以抵扣吗
  • 劳务派遣公司会扣工资吗
  • 一般商贸企业出口白酒要交税吗
  • 财政拨款收入是指行政单位从哪里取得的预算资金
  • linux使用范围
  • php insert into
  • php设计模式六大原则
  • PHP:imagesetpixel()的用法_GD库图像处理函数
  • 以房产投资入股应当缴纳契税
  • 营改增后小规模纳税人标准
  • php截取文件后缀名方法
  • 职工教育经费是否可以抵扣进项税
  • 保险代理人展业成本如何计算
  • 火车票抵扣进项税需要认证吗
  • 运营费的税率
  • 财政补贴收入账务处理
  • 应收账款让售会计怎么做
  • 一般纳税人超过多少要交税
  • 调整以前年度销项税怎么填申报表
  • 个体工商户要开票吗
  • SQL Server 2012 FileTable 新特性详解
  • 收到预付货款用什么凭证
  • 发票与销售小票有什么区别?
  • 建筑企业需要缴纳的税种
  • 在建工程的
  • 应收票据的分录怎么做
  • 收到返利怎么做会计分录
  • 收到客户承兑怎么做账
  • 增值税普票跨月作废怎么操作
  • 房地产公司工程部岗位职责
  • 价税分离购销合同模板
  • 所有者权益的确认依赖于资产和负债的确认
  • centos6.2安装
  • xp系统打开注册表
  • windows7桌面出现一个窗口删除不了
  • 利用windows资源管理
  • 进不去操作系统 怎么样修复引导
  • win8.1 应用商店是不是不能用了
  • win7怎么自启动程序
  • win7开机提示重启怎么办
  • windows7手动更新
  • win7系统无法安装
  • Cocos2dx -lua QuickXDev拓展
  • Nodejs实现多人同时在线移动鼠标的小游戏分享
  • 电脑安装node
  • javascript添加元素
  • node.js的安装步骤
  • [置顶]星陨计划
  • js对象用法
  • js中tolocalestring
  • jquery点击方法
  • asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
  • 求行驶时间的公式
  • 浅谈如何实现乡村振兴论文
  • jQuery animate easing使用方法图文详解
  • 河北税务怎么查询交了没有
  • 专项调查法
  • 被标记为广告推销的电话能接吗
  • 国家税务总局朝阳税务局
  • 企业应交个人所得税分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设