浅谈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 相关文章推荐
JQuery中getJSON的使用方法
Dec 13 Javascript
JS 添加网页桌面快捷方式的代码详细整理
Dec 27 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
jquery foreach使用示例
Sep 12 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
Jan 04 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
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
python自动安装pip
2014/04/24 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python 加密的实例详解
2017/10/09 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python移位运算的实现
2019/07/15 Python
三个python爬虫项目实例代码
2019/12/28 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
什么是python的必选参数
2020/06/21 Python
python 8种必备的gui库
2020/08/27 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
个人函授自我鉴定
2014/03/25 职场文书
年终奖发放方案
2014/06/02 职场文书
社会实践活动总结范文
2014/07/03 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
复兴之路观后感
2015/06/02 职场文书
计算机教师工作总结
2015/08/13 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis