浅谈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 相关文章推荐
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
纯JS实现旋转图片3D展示效果
Apr 12 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
轻松实现Bootstrap图片轮播
Apr 20 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
js实现动态显示时间效果
Mar 06 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
Node+OCR实现图像文字识别功能
Nov 26 Javascript
js实现随机圆与矩形功能
Oct 29 Javascript
JavaScript执行机制详细介绍
Dec 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
2014最热门的24个php类库汇总
2014/12/18 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
nohup的用法
2012/11/26 面试题
党校培训自我鉴定
2014/02/01 职场文书
门前三包责任书
2014/04/15 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
综治工作汇报材料
2014/10/27 职场文书
在职证明书模板
2015/06/15 职场文书