1:对象的创建
面向对象为了能够批量创建差不多的对象。
因此我是使用函数来创建对象。这个函数有一个名字叫做构造函数。函数名的首字母必须大写!
函数的人(名字){
this.name = name;
}
然后var person = new Person('name');
这样就可以创建一个对象..书上吧这个叫做实例(实例就是一个对象)
实例中有个一个--proto ----的属性!指向构造函数和原型!
因为我们要创建的对象不可能全部一样也不可能全部都不一样因此在JS中是使用将一样的属性和方法都放在一个原型的对象中.prototype这个东西叫做原型。
原型这个对象中有一个属性叫做构造这个东西又将原型指向了构造函数!
这样就形成了一个循环。将所有的东西都串联了起来。
2:创建对象的继承
继承就是有两个构造函数。我要将其中一个构造函数的属性或者方法放到另一个或者另外多个构造函数中!(继承别个构造函数的方法和属性)
继承需要好多步方可完美的!
首先,原型链继承
只需要将子类构造函数的原型指向父类构造函数的实例就可以了。
例如:
child.prototype = new Parent();
这个不能传参
因此再增加一种关联父类的方法
函数的孩子(){
Parent.call(本)
}
这样我们的子类函数就可以共享父类的属性和方法而且可以传参了。
但是这样有一个属性复用的问题
因此下面就是完美的方案了。
函数父(名称){
this.name = name;
}
Parent.prototype.sayHello = function(){
的执行console.log( '你好!');
}
函数儿童(姓名,年级){
Parent.call(本); //这样就可以共享父类的属性而且可以传参!
//接下来就是共享父类的原型上的东西了。
this.name = name;
this.grade = grade;
}
inherPrototype(儿童,人);继承方法的函数;
Child.prototype.shoot = function(){
console.log('biu biu biu');
}
函数inherPrototype(副类别,超){
//的的Object.create这个东西做了什么事情呢?
岛创建了一个{}
II原型 - “参数
三返回了{}。
var protoType = Object.create(superType.prototype);
protoType.constructor = subType;
subType.prototype = protoType;
(
var Temp = function(){}
Temp.prototype = superType.prototype;
Temp.prototype.constructor = subType;
subType.prototype = Temp.prototype;
)
}
这样就完美了!