理解 javascript prototype

javascript prototype

  • 原型法的主要思想是,现在有个类A,想要创建一个类B,这个类是以A为原型的,并且能进行扩展,则称B的原型为A。

  • Javascript 的方法分为三类: 类方法、对象方法、原型方法。

    function People(name) {
      this.name = name;
      // 对象方法
      this.Introduce = function() {
        console.log("name is " + this.name);
      }
    }
    // 类方法
    People.Run = function() {
      console.log("can run");
    }
    // 原型方法
    People.prototype.IntroduceZh = function() {
      console.log("pro name is " + this.name);
    }
    // 测试
    var p = new People("jack");
    p.Introduce();
    People.Run();
    p.IntroduceZh();
    
  • obj1.func.call(obj) 方法,就是将 obj 当成 obj1,调用 func 方法。

  1. prototype 的含义
  • JavaScript中的每个对象都有 prototype 属性。对象的 prototype 属性的解释是,返回对象类型原型的引用。

  • A.prototype = new B(); A的prototype为B的一个实例,可以理解为 A 将 B 中的方法和属性全部克隆了一遍,A 能使用 B 的方法和属性。

  1. 验证
function base() {
  this.show = function() {
    console.log("base:show");
  }
}
function extend() {
  this.show = function() {
    console.log("extend:show");
  }
}
extend.prototype = new base();
var instance = new extend();
instance.show(); // extend:show
var base = new base();
base.show.call(instance); // base:show

函数运行时,会先去本体的函数中查找,如果找到则运行,否则到prototype中查找函数。或者可以理解为prototype不会克隆同名的函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,895评论 2 17
  • 我基本從來不寫工作的事兒。 因為工作實在沒啥好寫的,不就是工作唄。 然後今天打算稍微寫一點,就寫JS吧。 我一直相...
    LostAbaddon阅读 1,471评论 22 21
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,112评论 1 10
  • 她看着窗户和铁丝网之间的那个紫色衣架,心里想着,不就是一个衣架吗?一打也就十块钱左右,至于吗?但想到十块钱买杂米煮...
    飒然的秋阅读 491评论 4 1
  • 所谓西风烈,长空雁叫霜沉月,还有年少万兜鍪,坐断东南战未休,说的大概就是当代中国女人血红的大嘴,在考究的西...
    江西黄小军阅读 863评论 1 2