最简单的类
function Person() { this.name = 'lisi'; this.age = 20; } var p = new Person(); alert(p.name);
构造函数和原型链里增加方法
function Person() { this.name = 'lisi'; this.age = 20; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } var p = new Person(); alert(p.name); p.run(); p.work()
类里的静态方法
function Person() { this.name = 'lisi'; this.age = 20; this.run = function() { alert(this.name + '在运动'); } } Person.getInfo = function() { alert('我是静态方法') } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } var p = new Person(); // p.work(); Person.getInfo()
es5里面的继承,对象冒充实现继承
只有一个弹框,说明没有继承到prototype上的方法
function Person() { this.name = 'lisi'; this.age = 20; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } //Web类继承Person类 function Web() { Person.call(this); } var w = new Web(); w.run(); w.work();
es5里面的继承,原型链实现继承
function Person() { this.name = 'lisi'; this.age = 20; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } //Web类继承Person类 function Web() { } Web.prototype = new Person(); var w = new Web(); w.run(); w.work();
原型链实现继承的问题
function Person(name, age) { this.name = name; this.age = age; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } function Web(name, age) { } Web.prototype = new Person(); var w = new Web('lisi', 20) w.run() w.work()
原型链+对象冒充的组合继承模式
function Person(name, age) { this.name = name; this.age = age; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } function Web(name, age) { Person.call(this, name, age); } Web.prototype = new Person(); var w = new Web('lisi', 20) w.run() w.work()
原型链+对象冒充的另一种方式
function Person(name, age) { this.name = name; this.age = age; this.run = function() { alert(this.name + '在运动'); } } Person.prototype.sex = '男'; Person.prototype.work = function() { alert(this.name + '在工作'); } function Web(name, age) { Person.call(this, name, age); } Web.prototype = Person.prototype; var w = new Web('lisi', 20) w.run() w.work()