浅谈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 相关文章推荐
日期函数扩展类Ver0.1.1
Sep 07 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
jQuery原生的动画效果
Jul 10 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
微信小程序实战之运维小项目
Jan 17 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
Oct 14 Javascript
JS实现简易计算器
Feb 14 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 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
给多个地址发邮件的类
2006/10/09 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python 备份程序代码实现
2017/03/06 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python logging日志模块原理及操作解析
2019/10/12 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
就业推荐表导师评语
2014/12/31 职场文书