工厂函数,顾名思义,就是通过一个"工厂的加工" 来创建一个对象的函数

//工厂函数
function createPerson(name,sex){
sex = sex == '男' ? '女' : sex // '加工'
return {
name:name,
sex:sex
};
} var p =createPerson('张三','男');

这种操作在需要创建多个相似对象时可以有效地减少重复代码,但是这样有个缺点就是,每次调用工厂函数创建的对象都是独立的object,不存在继承关系,显然,这样的面向对象编程失去了灵魂

于是, 对象构造函数就出现了

//构造函数
function Person(name,sex){ //注意:构造函数函数名首字母要大写, 用以区别普通函数
this.name = name;
this.sex = sex
} var p = new Person('张三','男');

使用构造函数有几个要注意的点

1.构造函数创建的对象的constructor对象引用的是该构造函数, 即

p.constructor === Person //true

2.在调用构造函数时要使用new关键字,在使用了new关键字后,内部进行了四个步骤:

  - 构造函数创建一个空对象

  - 构造函数里的this指向该空对象

  - 空对象的内部原型指向构造函数的原型对象

  - 构造函数执行完之后, 如果没有return的话, 就把该空对象返回

3.如果不使用new 关键字,调用构造函数时,就会当成普通的函数调用,里面的this 指向的就是window,且如果没有return就不会返回;

最新文章

  1. Python swapcase()方法
  2. javascript知识点总结----函数内部属性
  3. 二路归并排序算法实现-完整C语言程序
  4. C语言编程心得
  5. 关于调整浏览器窗口JS
  6. JavaScript基础概念
  7. TCP中close和shutdown之间的区别
  8. ios 动态测定字符串frame : boundingRectWithSize函数
  9. java中利用JFrame创建窗体 【转】
  10. Enhancing the Scalability of Memcached
  11. requirejs源码
  12. ubuntu11.10(TQ210)下移植boa服务器
  13. C#实现时间戳转化
  14. WebService到底是什么? [转]
  15. C# Winform 实现Ajax效果自定义按钮
  16. vim配置强悍来袭
  17. 自动化测试基础篇--Selenium cookie操作
  18. linux下mysql源码安装
  19. Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式
  20. 27.Hibernate-缓存和懒加载.md

热门文章

  1. React 项目使用 React-router-dom 4.0 以上版本时使用 HashRouter 怎么控制 history
  2. WinRAR 常用变量列表
  3. Luogu P5468 [NOI2019]回家路线 (斜率优化、DP)
  4. CSS 阴影应用
  5. sun.misc.BASE64Decoder 替代
  6. springCloud分布式事务实战(一)案例需求及实现步骤
  7. python面向对象之设计模式
  8. 企业链表C语言实现
  9. zabbix监控惠普打印机
  10. tomcat的work目录的作用