浅谈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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
JS中判断null、undefined与NaN的方法
Mar 24 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
vue实现评价星星功能
Jun 30 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判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
python是怎么被发明的
2020/06/15 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
学校欢迎标语
2014/06/18 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
商业计划书之服装
2019/09/09 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python