不用死记硬背,理解才是硬道理。只需要写个例子,然后输出看一下就清楚了

首先我们看下new Person输出什么?

    var Person = function(name, age) {
this.name = name;
this.age = age;
};
Person.prototype.show = function() {
console.log(this.name, this.age);
};
var p = new Person("bella", 10);
console.log(p);

有属性name, age 和 __proto__

__proto__里面有原型方法show,constructor, __proto__

然后我们再输出构造器Person.prototype:

对比一下,发现p的__proto__的值就是构造函数Person的prototype的属性值。

因此new操作符创建对象可以分为以下四个步骤:

  • 创建一个空对象
  • 将所创建对象的__proto__属性值设为构造函数的prototype的属性值
  • 执行构造函数中的代码,构造函数中的this指向该对象
  • 返回对象

因此上面的过程就可以等同于下面的过程:

    var Person = function(name, age) {
this.name = name;
this.age = age;
};
Person.prototype.show = function() {
console.log(this.name, this.age);
};
var p = {};
p.__proto__ = Person.prototype;
Person.call(p, "balle", 10);
// var p = new Person("bella", 10);
console.log(p);

最新文章

  1. 重装系统后,delphi7打开报错
  2. Effective objective-c 2.0阅读笔记
  3. Node-webkit 资料笔记
  4. LUA+resty 搭建验证码服务器
  5. Nginx - Windows下Nginx初入门
  6. 百科编辑器ueditor应用笔记
  7. .NET: WPF DependencyProperty
  8. GetProperties(BindingFlags)说明
  9. ext2元数据结构
  10. c++的输入流基础知识
  11. Debian安装Apache2+MySQL5+PHP5(zz)
  12. alter database open resetlogs
  13. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
  14. Javascript CustomEvent
  15. Python进阶 函数式编程和面向对象编程等
  16. [C#学习笔记3]关于Main(string[ ] args)中args命令行参数
  17. hive group by聚合函数增强
  18. Android 开发 记录一个DP、PX、SP转换工具类
  19. LuoGu P2735 电网 Electric Fences
  20. openstack安装-计算节点-neutron服务安装

热门文章

  1. grafana的metric的计算语句
  2. 冲刺Noip2017模拟赛6 解题报告——五十岚芒果酱
  3. Windows下直接双击可执行的jar
  4. System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
  5. Oracle的查询-分页查询
  6. jsp获取Session中的值
  7. hdu4813 01背包+前缀和
  8. Python re 模块findall() 函数返回值展现方式详解
  9. Redis 和 Memcached 各有什么优缺点,主要的应用场景是什么样的?
  10. 笔记-3:mysql数据定义