浅谈JavaScript函数的四种存在形态


Posted in Javascript onJune 08, 2016

函数的四种存在形态:

1.函数形态

2.方法形态 将函数赋值给某一个对象的成员,那么就称为方法

3.构造器形态

4.上下文形态

1.函数形态:

var foo = function() {
  alert(this);       //this是window
};

2.方法形态:

 

o = {};
o.foo = foo;  //将函数foo赋值给对象o的foo属性
o.foo();    //弹出的是object,此时的this表示object

 

var lib = {
  test:function() {
    alert(this);     //此处的this表示object(lib对象本身)
    //var that = this;  //要想匿名函数中this表示lib对象,可以这样
    (function() {
     alert(this);    //此处的匿名函数不属于lib对象,所以this的任然表示window
    })();
  }
};
lib.test();

3.构造器(构造函数)var p = new Person();

1、new创建了对象,并开辟了空间

2、将对象的引用地址传递给函数,在函数中用this接收

3、构造方法执行结束,返回this

var Person = function() {
  this.age = 19;
  this.name = "Mr靖";
  return "{}";
};

var p = new Person();
alert(p.name);  //弹出的是undefined,由于函数返回的是一个对象,所以直接将这个对象返回给person,而忽略age,name属性
var Person = function() {
  this.age = 19;
  this.name = "Mr靖";
  return 123;
};

var p = new Person();
alert(p.name);  //弹出“Mr靖”,由于返回值不是对象,所以直接忽略返回值
alert(p);      //弹出object

改变的东西有:构造函数改变了函数的返回值;如果函数的返回值是一个对象,那么就按照返回值来返回;如果返回值不是一个对象就忽略返回值,直接返回this;

4.上下文调用模式函数.apply(对象, [参数列表])

var foo1 = function(a, b) {
  alert(this);
  return a > b ? a : b;
};
var num = foo1.apply(null, [112, 34]);   //此时foo1是函数形态,this表示window
num = foo1.apply({}, [112, 34]);      //此时foo1是方法形态,this表示参数中传入的对象{}

函数.call(对象, 参数列表);

var num1 =foo1.call(null,112,34);
num1=foo1.call({},112,34);      //除了参数列表外,其余和apply一样

以上这篇浅谈JavaScript函数的四种存在形态就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
javascript比较两个日期的先后示例代码
Dec 31 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
Aug 22 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
BootStrap表单验证实例代码
Jan 13 Javascript
a标签置灰不可点击的实现方法
Feb 06 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
Node.js 基础教程之全局对象
Aug 06 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
Sep 05 Javascript
CocosCreator入门教程之网络通信
Apr 16 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 #Javascript
关于session和cookie的简单理解
Jun 08 #Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 #Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
Jun 07 #Javascript
JavaScript基础语法之js表达式
Jun 07 #Javascript
JavaScript必看小技巧(必看)
Jun 07 #Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 #Javascript
You might like
php使用递归计算文件夹大小
2014/12/24 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
Jquery 插件开发笔记整理
2011/01/17 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
把pandas转换int型为str型的方法
2019/01/29 Python
Python 求数组局部最大值的实例
2019/11/26 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
求职自荐信
2013/12/14 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS