深入挖掘js之继承

一、伪类

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();

扩充新原型对象增加get_name方法

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方法构造更多的实例

三、函数

运用模块模式的继承模式去保护隐私。

  • 1、创建一个新对象,可以通过构造一个对象字面量或者和new浅醉连用去调用一个构造函数,或者使用Object.create构造一个已经存在的对象的新实例,或者调用任意一个会韩慧一个对象的函数
  • 2、有选择的定义私有实例变量和方法
  • 3、给这个新对象扩充方法
  • 4、返回那个新对象

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...