一、伪类
this.prototype = { constructor: this};
Function.method('new',function(){ //创建一个新对象,它继承自构造函数的原型对象 var that = Object.create(this.prototype); // 调用构造函数,绑定-this-到新对象上 var other = this.apply(that,arguments); //如果返回值不是一个对象,就返回该新对象 return (typeof other ==='object'&&other)||that; })
我们定义一个构造器来扩充它的原型
var Mammal = function(name){ this.name=name; }; Mammal.prototype.get_name = function(){ return this.name; }; Mammal.prototype.says = function(){ return this.saying || ''; }
现在我们构造一个实例
var myMammal = new Mammal('Hello World!'); var name = myMammal.get_name();
我们构造一个伪类来继承Mammal,通过定义它的constructor函数并替换他的prototype为一个Mamma
var Cat = function(name){ this.name =name; this.saying= 'meow'; }
替换Cat.prototype为一个新的Mammal实例
Cat.prototype =new Mammal();
Cat.prototype.get_name = function(){ return this.says()+''+this.name+''+this.says(); }; var myCat =new Cat('wsm'); var says = myCat.says(); var name= myCat.get_name();
二、原型
- 构造一个有用的对象开始,接着可以构造更多和那个对象类似的对象。
Object.create方法构造更多的实例
三、函数化
运用模块模式的继承模式去保护隐私。