浅谈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 相关文章推荐
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
Feb 22 Javascript
js实现简单模态窗口,背景灰显
Nov 14 Javascript
解javascript 混淆加密收藏
Jan 16 Javascript
下拉框select的绑定示例
Sep 04 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
jquery基本选择器匹配多个元素的实现方法
Sep 05 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
May 02 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
微信小程序WebSocket实现聊天对话功能
Jul 06 Javascript
详解如何用VUE写一个多用模态框组件模版
Sep 27 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
vue实现列表垂直无缝滚动
Apr 08 Vue.js
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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
python的exec、eval使用分析
2017/12/11 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python3并发写文件与Python对比
2019/11/20 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python celery原理及运行流程解析
2020/06/13 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
python绘制趋势图的示例
2020/09/17 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
俄罗斯女装店:12storeez
2019/10/25 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
开学典礼感言
2014/02/16 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
学风建设演讲稿
2014/09/12 职场文书
成都人事代理协议书
2014/10/25 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
Python+Tkinter打造签名设计工具
2022/04/01 Python