通过构造函数生成的实例对象中的属性和方法其实是从构造函数中"copy"一份后生成的, 也就是说虽然生成的对象是构造函数的实例, 但里面的属性和方法确实相互独立的, 比如下面的lilei.sayHi 和 hanmeimei.sayHi这两个方法虽然同名, 功能也一样, 但实际上是内存中的两个不同地址里的函数, 因此他们是不全等的.

function Person(name){
this.name = name;
this.sayHi = function(){
console.log("Hi, I'm " + this.name);
};
} var lilei = new Person("Lilei");
var hanmeimei = new Person("Hanmeimei"); lilei.sayHi === hanmeimei.sayHi; // false

而原型对象则实现了实例对象使用构造函数方法/属性的"统一" / "同源"调用. 直白地讲, 如果把上面代码中的sayHi()方法定义在原型对象上, 那lilei.sayHi 和 hanmeimei.sayHi 就是全等的.

function Person(name){
this.name = name;
} Person.prototype.sayHi = function(){
console.log("Hi, I'm " + this.name);
}; var lilei = new Person("Lilei");
var hanmeimei = new Person("Hanmeimei"); lilei.sayHi === hanmeimei.sayHi; // true

打个比方, 母亲生了两个孩子, 孩1和孩2, 他们都有眼睛闭嘴耳朵嘴巴, 但这些并不是母亲的器官, 而是从母亲那里继承过来的, 但母亲有一个玩具, 是奶奶的, 这个玩具是唯一的, 但奶奶可以玩, 母亲也可以玩, 孩1和孩2也可以玩, 这里的玩具就是定义在奶奶这个构造函数的对象原型prototype上的一个属性, 这个属性可以被继承的实例对象所使用. 而非像眼睛鼻子这种需要复制一份.

最新文章

  1. DAY5 DVWA之SQL注入演练(low)
  2. [转] java中int,char,string三种类型的相互转换
  3. 关于html、asp、php模板引擎、aspnet mvc、REST的一点思考
  4. 最长递增子序列LIS再谈
  5. JSP 相关试题(二)
  6. 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍
  7. bzoj1305
  8. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
  9. [LeetCode OJ] Gas Station
  10. Womany女人迷 | 氪加
  11. UVA - 10131Is Bigger Smarter?(DAG上的DP)
  12. linux网络设置和虚拟机克隆转移之后Error:No suitable device found:no device found for connection 'System eth0'问题解决
  13. c++ 中lambda
  14. 约定Service构建方式
  15. tomcat8.0部署启动
  16. 【Android】Android apk默认安装位置设置
  17. OpenGL ES: 纹理采样 texture sample
  18. docker OCI runtime
  19. LSTM生成尼采风格文章
  20. Server 2008 R2大改造变成梦幻Win7系统

热门文章

  1. Python 死循环
  2. [微信小程序]实现一个自定义遮罩层
  3. EINVRES Request to https://bower.herokuapp.com/packages/ failed with 502
  4. LoadRunne遇到的一些问题FAQ(持续更新...)
  5. [Java复习] 分布式PRC - Dubbo
  6. 自定义基于IFC数据的施工进度数据结构
  7. React——相关工具概述
  8. Linux 7 关闭、禁用防火墙服务
  9. python命令行参数解析OptionParser类用法实例
  10. pycurl模块