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 相关文章推荐
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
document.all的一个比较完整的总结及案例
Jan 31 Javascript
JS 实现获取打开一个界面中输入的值
Mar 19 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
JavaScript实战之菜单特效
Aug 16 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
Nov 11 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
微信小程序 JS动态修改样式的实现代码
Feb 10 Javascript
微信小程序中多个页面传参通信的学习与实践
May 05 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
Oct 28 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 strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
完美的php分页类
2017/10/24 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
django创建超级用户过程解析
2019/09/18 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
用python批量移动文件
2021/01/14 Python
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
MYSQL基础面试题
2012/05/13 面试题
群众路线组织生活会发言材料
2014/10/17 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书