原型链及继承的理解定义函数function A(name) { // 构造内容(构造函数) this.name = name; /* // 也支持定义方法。但为了性能,不建议在构造里定义方法 this.fn = function(parmas){ // your code } */}// 原型链A.prototype.changeName = function(name) { this.name = name;}// 静态属性A.staticPF = ‘static12345’;继承继承构造函数function B(name) { // B 继承 A 的构造函数 也可用apply A.call(this, name);}// console.log(B)var b = new B(‘ccc’);console.log(b.name); // => ccc继承静态属性// B 继承 A 的静态属性,查找流程如下// B.staticPF = >B.proto.staticPF => A.staticPF;B.proto = A;console.log(B.staticPF); // => static12345继承原型链var b = new B(‘ccc’);// B 继承 A 的原型链, 3种方式,推荐第3种// B.prototype = A.prototype; // 需要前置在b对象实例化前// b.proto = A.prototype;// B.prototype.proto = A.prototype;B.prototype.proto = A.prototype;b.changeName(‘ddd’) // b实例最终继续了A的changeName方法console.log(b.name); // => ddd