Javascript 普通函数和构造函数的区别


Posted in Javascript onNovember 05, 2016

普通函数和构造函数的区别

在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。

在函数调用的时候:

function fn() { }

     构造函数:1. new fn( )
                     2 .构造函数内部会创建一个新的对象,即f的实例
                     3. 函数内部的this指向 新创建的f的实例
                     4. 默认的返回值是f的实例

     普通函数:1. fn( )
                     2. 在调用函数的内部不会创建新的对象
                     3. 函数内部的this指向调用函数的对象(如果没有对象调用,默认是window)
                     4. 返回值由return语句决定 

 构造函数的返回值:

     有一个默认的返回值,新创建的对象(实例);
     当手动添加返回值后(return语句):

          1. 返回值是基本数据类型-->真正的返回值还是那个新创建的对象(实例)
          2. 返回值是复杂数据类型(对象)-->真正的返回值是这个对象 

看一个常见的面试题

<script>
  function foo() {
    var f2 = new foo2();
    console.log(f2);  //{a: 3}
    console.log(this); //window
    return true;
  }
  function foo2() {
    console.log(this); //foo2类型的对象 不是foo2函数
//    this.age = 30;
    return {a: 3};
  }
  var f1 = foo();
  console.log(f1); // true
</script>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
解析Javascript小括号“()”的多义性
Dec 03 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
JS实现的表格行鼠标点击高亮效果代码
Nov 27 Javascript
iScroll.js 使用方法参考
May 16 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
JSON的parse()方法介绍
Jan 31 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
小程序实现多个选项卡切换
Jun 19 Javascript
js实现头像上传并且可预览提交
Dec 25 Javascript
JavaScript的一些小技巧分享
Jan 06 Javascript
Javascript 函数的四种调用模式
Nov 05 #Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
Nov 04 #Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 #Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
Nov 04 #Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 #Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 #Javascript
AngularJS过滤器filter用法实例分析
Nov 04 #Javascript
You might like
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
PHP与MySQL交互使用详解
2006/10/09 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
PHP 验证登陆类分享
2015/03/13 PHP
js 操作css实现代码
2009/06/11 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
python 字符串常用方法汇总详解
2019/09/16 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
单位创先争优活动方案
2014/01/26 职场文书
人事专员工作职责
2014/02/22 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
安全生产宣传标语
2014/06/06 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
催款函怎么写
2015/06/24 职场文书
谢师宴学生致辞
2015/07/27 职场文书
Redis可视化客户端小结
2021/06/10 Redis
mysql主从复制的实现步骤
2021/10/24 MySQL
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL