复习了面向对象的基本概念,以及如何自定义对象、如何使用内置对象、如何进行错误处理与代码调试、如何理解JavaScript中的原型与继承。温故而知新。
在 js 中,对象是属性和方法的集合,变量只能保存单一数据,对象则可以保存多种数据。 • 类:我们善于将事物进行分类,类是一个抽象的概念 • 对象:具体的事物 – 猫是一类 – 波斯猫 对象 • 类是对象的抽象,对象是类的具体事例 • 类不占用内存,对象占用内存空间
json(JavaScript Object Notation),是一种轻量级的数据交换格式。它基于 js 对象的格式,以 key:value 格式存储数据,独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
• json 的 key必须是字符串,需要用双引号 • json 的 value可以是数字、字符串、数组、对象 • 数据由 , 分隔,最后一项数据后不能有 , 号 • 字符串类型的值必须使用双引号
– 语法: for…in 循环 – 多用于遍历 json
深拷贝:将数据的所有引用结构都拷贝一份,数据在内存中独立。 浅拷贝:只针对当前对象的属性进行拷贝(浅拷贝可以节省内存开销)。
(1)构造函数的命名推荐采用帕斯卡命名规则,即所有的单词首字母大写。 (2)在构造函数内部,使用this来表示刚刚创建的对象。
(1)分析this指向 在JavaScript中,函数内的this指向通常与以下3种情况有关。 ①new关键字将函数作为构造函数调用时,构造函数内部的this指向新创建的对象。 ②直接通过函数名调用函数时,this指向全局对象(浏览器中表示window对象)。 ③如果将函数作为对象的方法调用,this将会指向该对象。 (2)更改this指向
Math对象用于对数值进行数学运算,与其他对象不同的是,该对象不是一个构造函数,不需要实例化就能使用。 公式:Math.random()*(max-min)+min,表示生成大于或等于min且小于max的随机值。
注意:setDay(这个真没有!!!!,星期是通过设定日期自动计算的 )
注意:如果try中有多行代码,只要其中一行出现错误,后面的代码都不会执行;如果错误已经被处理,则catch后面的代码会继续执行。由此可见,编写在try中的代码量应尽可能的少,从而避免错误发生时造成的影响。 在以Java为代表的编程语言中,引入了异常(Exception)的概念,利用try…catch进行异常处理。JavaScript错误处理的设计思想与之类似,因此也可以将JavaScript中的try…catch称为异常处理。
(1)错误对象的传递 (2)手动抛出错误对象
(1)利用原型对象实现继承 (2)替换原型对象实现继承
注意:在基于构造函数创建对象时,代码应写在替换原型对象之后,否则创建的对象仍然会继承原来的原型对象。
(3)利用Objext.create()实现继承 (4)混入继承
实际开发中,对于不需要创建对象即可访问的成员,推荐将其保存为静态成员。举例:构造函数的prototype属性就是一个静态成员,可以在所有实例对象中共享数据。
当对象访问某一个属性的时候,首先会在当前对象中搜索是否包含该成员,如果包含则使用,如果不包含,就会自动在其原型对象中查找是否有这个成员,这就是属性搜索原则。
概念:在JavaScript中,对象有原型对象,原型对象也有原型对象,这就形成了一个链式结构,简称原型链。 (1)对象的构造函数 (2)对象的原型对象 (3)函数的构造函数
用户还可以通过实例化Function构造函数的方式来创建函数。该构造函数的参数数量是不固定的,最后一个参数表示用字符串保存的新创建函数的函数体,前面的参数(数量不固定)表示新创建函数的参数名称。
(4)原型对象的原型对象 对象.constructor.prototype,可访问对象的原型对象。构造函数的prototype属性指向原型对象,原型对象的constructor属性又指回了构造函数,这就构成了一个循环。 结论:通过这种方式无法访问到原型对象的原型对象。 (5)原型链的结构
脚下留心:在进行原型操作时,“对象.constructor.prototype”访问到的是该对象当前继承的原型对象的构造函数的原型对象,并不一定是实际构造函数的原型对象。 多学一招:instanceof 运算符
上一篇 >>> js函数篇 下一篇 >>> BOM对象与DOM对象