一、原型式继承
JavaScript继承的对象函数并不是通过复制而来,而是通过原型链继承(通常被称为 原型式继承 —— prototypal inheritance)
1.例子
1 | function Person(first, last, age, gender, interests) { |
2.定义构造函数
创建一个Teacher类,继承与Person的所有成员:
一个新的属性,subject - 教师教授的学科;
一个被更新的greeting()方法;
有参数 - 构造函数继承:
创建Teacher()构造器:
1 | //创建继承与Person的Teacher类 |
无参数 - 构造函数继承:
1 | function Brick(){ |
3.设置构造函数的原型和构造器引用
继承方法:
1 | Teacher.prototype = Object.create(Person.prototype); |
4.向构造器添加和重写新的函数
1 | //新增方法: |
tips:此继承方法并不是唯一的方法.
演示:
1 | var teacher1 = new Teacher('Dave', 'Griffiths', 31, 'male', ['football', 'cookery'], 'mathematics'); |
练习:新增继承于Person()的Student类
1 | //创建继承Person的Student类 |
5.对象成员总结
那些定义在构造器函数中的、用于给予对象实例的。
在代码中,它们是构造函数中使用this.x = x类型的行;
在内置的浏览器代码中,它们是可用于对象实例的成员(通常通过使用new关键字调用构造函数来创建,例如var myInstance = new myConstructor())。
那些直接在构造函数上定义、仅在构造函数上可用的。
这些通常仅在内置的浏览器对象中可用,
并通过被直接链接到构造函数而不是实例来识别。 例如Object.keys()。
那些在构造函数原型上定义、由所有实例和对象类继承的。
这些包括在构造函数的原型属性上定义的任何成员,如myConstructor.prototype.x()。
6.JS中使用继承的场景
如果您开始创建一系列拥有相似特性的对象时,那么创建一个包含所有共有功能的通用对象,然后在更特殊的对象类型中继承这些特性,将会变得更加方便有用。
如果您开始创建一系列拥有相似特性的对象时,那么创建一个包含所有共有功能的通用对象,然后在更特殊的对象类型中继承这些特性,将会变得更加方便有用。过多的继承会在调试代码时给您带来无尽的混乱和痛苦.
二、JSON的使用
JSON是一种按照JavaScript对象语法的数据格式,用于将结构化数据表示为JavaScript对象的标准格式,通常用于再网站上表示和传输数据.
从服务器向客户端发送一些数据,用于网页的显示.
JSON可以作为一个对象或者字符串存在.
1.JSON结构
1 | 对象树: |
2.JSON数组
1 | [ |
3.其他
JSON是一种纯数据格式,只包含属性,没有方法;
JSON要求两头的{}来使其合法;
JSON可以将任何标准合法的JSON数据格式化保存,不只是数组和对象;
再JSON中,只有字符串才能用作属性;
4.完成例子:
加载json
1 | //1.声明变量 - 保存URL |
5.对象和文本间的转换
parse(): 以文本字符串形式接受JSON对象作为参数,并返回相应的对象。
stringify(): 接收一个对象作为参数,返回一个对应的JSON字符串。
var myJSON = { "name" : "Chris", "age" : "38" };
myJSON
var myString = JSON.stringify(myJSON);
myString