绑定构造函数
在子类构造函数中使用Fatherconstructor.apply(this, arguments)
eg:
//父类function People(name,age){ this.name = name; this.age = age; this.species = "human"; this.getName = function(){ return this.name; } this.getAge = function(){ return this.age; } this.sayHello = function(){ console.log("hi,I am the father class"); }}//子类function Children(name,age){ People.apply(this,arguments)}var wish = new Children("wish");console.log("the name of wish is:"+wish.getName()); //the name of wish is:wish console.log(wish.sayHello()); //hi,I am the father class
使用prototype
详细见:
也使用prototype拷贝
准备拷贝函数:
function extend(Child, Parent){ var parent = Parent.prototype; var child = Child.prototype; for(var i in parent){ child[i] = parent[i]; } child.uber = parent; //备用性质,指向上一层}
eg:
//父类function People(){}People.prototype.sayHello = function(){ return "hello";}People.prototype.getName = function(){ return this.name;}People.prototype.getAge = function(){ return this.age;}//子类function Children(name, age){ this.name = name; this.age = age;}//定义拷贝函数function extend(Child, Parent){ var parent = Parent.prototype; var child = Child.prototype; for(var i in parent){ child[i] = parent[i]; } child.uber = parent; //备用性质,指向上一层}//子类extend(Children, People);var wish = new Children("wish","20");console.log(wish.getName()); //wishconsole.log(wish.getAge()); //20console.log(wish.sayHello()); //hello
拷贝继承
function deepCopy(p, c) { var c = c || {}; for (var i in p) { if (typeof p[i] === 'object') { c[i] = (p[i].constructor === Array) ? [] : {}; deepCopy(p[i], c[i]); } else { c[i] = p[i]; } } return c;}
详细见:
参考:http://www.ruanyifeng.com/blog