new过程发生了什么

  1. 创建空对象;
      var obj = {};

  2. 设置新对象的constructor属性为构造函数的名称,设置新对象的proto属性指向构造函数的prototype对象;
      obj.proto = ClassA.prototype;
    扩展了新对象的原型链。

  3. 使用新对象调用函数,函数中的this被指向新实例对象:
      ClassA.call(obj);  //{}.构造函数();

4.返回this指针。当存在显示的返回时,返回return后面的内容。新建的空对象作废。

function test() {
this.name = "test";
}
test.prototype = {
a:{},
b:{}
}

var c = new test();

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

推荐阅读更多精彩内容

  • ECMAScript关键字 delete do else finally function in instance...
    doudou2阅读 734评论 0 0
  • 我基本從來不寫工作的事兒。 因為工作實在沒啥好寫的,不就是工作唄。 然後今天打算稍微寫一點,就寫JS吧。 我一直相...
    LostAbaddon阅读 1,481评论 22 21
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,379评论 0 7
  • 有些人希望被人關注,有些人呢,希望躲在角落,不被人關注。而我,是後者。 很早開始,上課喜歡坐在後排靠窗過靠墻,聚會...
    nicohug阅读 147评论 0 0
  • 你说的对,对于我弟弟,我和家里人的确得放开手,让他独立让他自己承担生活的困苦,这道理是没有错。 但是别拿你的性格来...
    卿卿九阅读 429评论 0 1