构造函数数组
- 首字母大写;
- 里面用this;
- 经过new来调用;
####继承
- 在相同属性和方法的对象集中在一个类中,再把相同的属性、方法再归到一个副类中,让子辈能用。
- 子辈继承父辈的属性,还能发展新的属性
- 在js中继承就要麻烦一些,js没有类。只有原型(是动态的)。
- 在js中能经过模拟来继承。怎么作假的继承(效果同样,但不是从父类继承下来的)————对象冒充法:
>第一个假的继承的方法。
><script>
//大写首字母,定义对象
//建立一个叫people的构造函数
function People(name,age){//外面传几个值进来,分别把这个值给name,age...
this.name = name;
this.age = age;
this.run = function(){
alert(this.name+"跑跑跑");
}
}
function Man(){//假的继承,由于man并非people的,能有效果
this.fifht = "pk";
//对象冒充法
this.inherit = People;
this.inherit(name,age);//执行
delete this.inherit;//删除
}
var m1 = new Man("小胖",18);
console.log(m1);
m1.run();
console.log(m1 instanceof Man);//检查对象,m1是否是Man的类型。
console.log(m1 instanceof People);//检查对象,m1是否是People的类型。若是man是People的类型,那m1也算是People的类型。
m1.run();
> </script>
>
第2、三个假的继承的方法(call和apply,是专门执行方法的,这2个的区别就是参数,一个是参数用逗号隔开,一个是数组)。
><script>
//大写首字母,定义对象
//建立一个叫people的构造函数
function People(name,age){//外面传几个值进来,分别把这个值给name,age...
this.name = name;
this.age = age;
this.run = function(){
alert(this.name+"跑跑跑");
}
}
function Man(){//假的继承,由于man并非people的,能有效果
//冒充法二
people.call(this,name,age);//this表明man.
//冒充法三
people.apply(this,[name,age]);//this表明man.
}
var m1 = new Man("小胖",18);
console.log(m1);
console.log(m1 instanceof People);
m1.run();
> </script>
- 真的继承方法:原型链(prototype),把子类的原型指给父类对象。
><script>
//大写首字母,定义对象
//建立一个叫people的构造函数
function People(name,age){//外面传几个值进来,分别把这个值给name,age...
this.name = name;
this.age = age;
this.run = function(){
alert(this.name+"跑跑跑");
}
}
function Man(name,age){
this.fight = "pk";
this.constructor(name,age);//为了子类能使用父类的参数,经过这个来调用父类的构造函数传参
constructor来把name和age传进去。
}
Man.prototype = new People();//实现真实继承的方法
var m1 = new Man("小胖",18);
console.log(m1);
console.log(m1 instanceof People);
m1.run();
console.log(m1.__proto__.__proto__.__proto__);//经过m1.___(2个下划线)proto__来查看父级。
> </script>
- 经过constructor(构造)来调用父类的构造函数传参
> <script>
function Dongwu(name,age){
this.name = name;
this.age = age;
this.run = function(){
alert(this.name +"跑跑跑");
}
}
function Dog(name,age,food){
this.food = food;
this.constructor(name,age);
}
Dog.prototype = new Dongwu();
function Mao(name,age,fish){
this.fish = fish;
this.constructor(name,age);
}
Mao.prototype = new Dongwu();
var m1 = new Dog("狗",18,"骨头");
var m2 = new Mao("猫",20,"鱼");
alert(m1.name+" "+" "+m1.age+" "+m1.food);
alert(m2.name+" "+" "+m2.age+" "+m2.fish);
m1.run();
m2.run();
</script>
app