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 相关文章推荐
JS+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
Jan 16 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 Javascript
vue中npm包全局安装和局部安装过程
Sep 03 Javascript
js脚本中执行java后台代码方法解析
Oct 11 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php中几种常见安全设置详解
2010/04/06 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
angular2模块和共享模块详解
2018/04/08 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
经贸日语专业个人求职信
2013/12/13 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
校外活动方案
2014/08/28 职场文书
投诉信格式范文
2015/07/02 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
golang中字符串MD5生成方式总结
2021/07/04 Golang
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js