对象
1.回顾JavaScript数据类型
- number(数值类型)
- string(字符串类型)
- boolean(布尔类型)
- null(空类型)
- undefined(未定义类型)
- object(实例化的对象是一组集合)
2.创建对象
对象分为两种:
- 自定义对象
- 内置对象
自定义对象:
//语法:
var 对象名称 = new Object();
//创建对象的两种方式:
1.基于Object对象的方式创建
//基于Object对象方式创建对象
var aa=new Object();
//属性
aa.name="张三";
aa.nl=14;
aa.age="男";
//方法
aa.shoename=function () {
alert("姓名是:"+aa.name+"\n"+"年龄是:"+aa.nl);
}
2.字面量赋值的方式创建
//字面量赋值创建对象
var flower={
name:"李四",
nl:"45",
age:"男",
show:function () {
alert("姓名是:"+this.name+"\n"+"年龄是:"+this.nl);
}
}
aa.shoename();
flower.show();
内置对象:
常见的内置对象有:
- String(字符串)对象
- Date(日期)对象
- Array(数组)对象
- Boolean(逻辑)对象
- Math(算数)对象
- RegExp 对象
构造函数和原型对象
1.构造函数
构造函数可用来创建特定类型对象,像 Object 和 Array 这样的原生构造函数,在运行时会自动执行。除此还可以创建自定义的构造函数(即普通函数)但是内部使用 this 变量,对构造函数使用 new 操作符
创建构造函数的四个步骤:
- 创建一个新对象
- 将构造函数的作用域赋给新对象
- 执行构造函数中的代码
- 返回新对象
//构造函数
function Flower (name,nl,age) {
//属性
this.name=name;
this.nl=nl;
this.age=age;
//方法
this.shoChu=function () {
alert("姓名是:"+this.name+"\n"+"年龄是:"+this.nl)
}
}
//实例化xuesheng1
var xuesheng1=new Flower("王五","25","男");
xuesheng1.shoChu();
2.原型对象
在JavaScript中创建的每个函数都有prototype,每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,prototype就是通过调用构造函数创建的对象实例原型对象,使用原型对象的好处就是可以让所有对象实例共享它所有的属性和方法。
function Flower(){
}
Flower.prototype.name="曼陀罗花";
Flower.prototype.genera="茄科 曼陀罗属";
Flower.prototype.area="印度、中国北部";
Flower.prototype.uses="观赏或药用";
Flower.prototype.showName=function() {
alert(this.name);
}
var flower1=new Flower();
var flower2=new Flower();
flower1.name="长春花";
alert(flower1.name);
alert(flower2.name);
继承
1.对象继承
1.借用构造函数继承
在子类型构造函数的内部调用父类型构造函数,即在子类型的构造函数的内部通过apply() 或者 call() 调用父类型的构造函数,也可以在将来创建的对象上执行构造函数
function Ren(name) {
Fulei.call(this);
this.name = name;
}
new Ren('张三');
2.组合继承
组合继承(combination inheritance)有时也叫作伪经典继承,指的是将原型链和借用构造的数的 技术组合到一块,从而发挥二者之长的一种继承模式。 其思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性。