浅谈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 event事件在IE、FF兼容性问题
Jan 01 Javascript
浅析return false的正确使用
Nov 04 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
Jan 26 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
ES6学习之变量的两种命名方法示例
Jul 18 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 Javascript
jQuery实现购物车全功能
Jan 11 jQuery
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 fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
PHP会话处理的10个函数
2015/08/11 PHP
javascript forEach通用循环遍历方法
2010/10/11 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
将python安装信息加入注册表的示例
2019/11/20 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
终端业务员岗位职责
2013/11/27 职场文书
如何写自我鉴定
2014/03/19 职场文书
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL