浅谈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把表单元素变为json对象
Nov 06 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
Aug 08 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
深入了解JS之作用域和闭包
Jun 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
星际流派综述
2020/03/04 星际争霸
PHP常用代码
2006/11/23 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
javascript 数组操作详解
2015/01/29 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python生成器表达式和列表解析
2016/03/10 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
python函数超时自动退出的实操方法
2020/12/28 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Delphi笔试题
2016/11/14 面试题
应届毕业生简历自我评价
2014/01/31 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
作风转变年心得体会
2014/10/22 职场文书
2014年党小组工作总结
2014/12/20 职场文书