浅谈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 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
Aug 15 Javascript
JavaScript实现的经典文件树菜单效果
Sep 08 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
基于JavaScript实现留言板功能
Mar 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 多维数组排序(usort,uasort)
2010/06/30 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php实现小程序支付完整版
2018/10/09 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
php给数组赋值的实例方法
2019/09/26 PHP
php接口隔离原则实例分析
2019/11/11 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
简单易懂的python环境安装教程
2017/07/13 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
建筑投标担保书
2014/05/20 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
企业党员个人自我评价
2014/09/20 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
妈妈别哭观后感
2015/06/08 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
HTML基础详解(下)
2021/10/16 HTML / CSS