浅谈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 相关文章推荐
破解Session cookie的方法
Jul 28 Javascript
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
javascript实现时间日期的格式化的方法汇总
Aug 06 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
根德YB400的电路分析
2021/03/02 无线电
PHP类中Static方法效率测试代码
2010/10/17 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
Python标准库与第三方库详解
2014/07/22 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
python读取文本中的坐标方法
2018/10/14 Python
python中的print()输出
2019/04/12 Python
python 实现波浪滤镜特效
2020/12/02 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
试用期员工考核制度
2014/01/22 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
保险公司演讲稿
2014/09/02 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书