js继承01
思路:
单例/工厂/构造函数--演进到原型
搞清原型结构
原型继承
模拟系统原型继承
实现自己的继承
观察原型继承特点
- 知识前提
类属于function类型, 天生有prototype属性,指向一个对象(constructor[类本身]+__prototype)
实例属于object类型, 天生有__proto__属性,指向所属类的prototype
function A() {
this.name = 'maotai' //name属于类A的私有属性
}
A.prototype.show = function () { //方法为了实例间公用,都放在prototype上.
console.log(this);
};
- 原型继承: 将B的prototype指向new A.
- 模拟系统原型继承
function myObject() {
};
function myEventTarget() {
};
myEventTarget.prototype = new myObject;
myEventTarget.prototype.addListener = function () {
};
function myNode() {
}
myNode.prototype = new myEventTarget;
myNode.prototype.createElement = function () {
};
var n = new myNode;
console.dir(n);
1,原型链继承特点
1,将B将A的私有属性继承了, 当作了B的共有属性
2,原型继承是索引的执行, 并非属性的添加. 和父子之间基因继承不一样, 病不是把A类的属性和方法克隆一份给B,而是让B和A之间增加原型链的链接.
- 实现自己的原型继承: 下面有内存图
function A() {
this.name = 'maotai'
}
function B() {
this.name = 'maomao'
}
B.prototype = new A;
var n = new B;
console.dir(n);