文档章节

Javascript函数4种调用模式

GZhiDao
 GZhiDao
发布于 2016/06/28 00:10
字数 591
阅读 28
收藏 6
// 函数
		//编程,就是将需求分解变成一组函数与数据结构的技能
		//javascript是一门基于原型继承的语言;
		//javascript 是一门函数式的面向对象编程语言,所有函数开源拥有方法
	// 函数对象
		/***
		1.对象字面量产生的对象连接到Object.prototype
		2.函数对象连接到Function.prototype
		3.每个函数创建时都会两个隐藏属性:函数的上下文和实现函数行为的代码
		4.函数对象在创建时会配有一个prototype属性,它的值是一个拥有constructor属性且值为该函数的对象***/
// 函数字面量
var add = function(a,b){ //匿名函数
	return a+b;
}

// 调用
/*4种调用模式:
	方法模式调用、函数调用模式、构造器调用模式、apply调用模式
	(这些模式在如何初始化关键参数this上存在差异)

	*/
//1.方法调用模式:
var myproject = {
	value:0,
	increamt:function(ico){
		if(ico === 'number')  this.value += 1;
		else this.value += ico;
	}
	//this从对象中取值或修改,this可取得所属对象的上下文的方法
	//称为公共方法
}
myproject.increamt(3);
console.log(myproject.value);
//2.函数调用模式:
	//函数不是对象的属性时,就被当作一个函数来调用,以此模式调用函数时,this被绑定到全局对象
	//解决方法:that
	myproject.double = function(){
		var that = this; //解决了全局对象的问题
		var helper = function(){
			that.value = add(that.value,that.value);
		};
		helper();//函数形式调用helper
	};
	myproject.double();
	document.write(myproject.value);//6
//3.构造器调用模式(不推荐):
	//如果函数前面带上 new 来调用,那么会创建一个连接到该函数的prototype成员新对象,同时this会被绑定到那个新对象上。
	var Quo = function (string){
		this.status = string;
	}
	Quo.prototype.get_status = function (){
		return this.status;
	}
	//构造一个	Quo事例
	var myQuo = new Quo('confused');
	console.log(myQuo.get_status());
//4.apply调用模式
	//apply方法让我们构建一个参数数组传递给调用函数,允许我们选择this的值,apply(要绑定给this的值,一个参数数组);
//构造一个包含两个数字的数组,并将它们相加
var array = [3,5];
var sum = add.apply(null,array);//sum=8
//构造一个包含 status 成员对象
var statusObject = {
	status:'a-ok'
};
//statusObject并没有继承自Quo.prototype,但我们可以在statusObject上调用get_status 方法
var status = Quo.prototype.get_status.apply(statusObject);//a-ok

© 著作权归作者所有

共有 人打赏支持
GZhiDao
粉丝 6
博文 119
码字总数 89796
作品 0
广州
前端工程师
私信 提问
JavaScript 中函数的定义和调用

3种函数定义方式: 1、使用关键字 function 来声明并定义函数 function myFunction(a, b) { } 调用函数: var x = myFunction(4, 3); 2、使用关键字 function 来定义匿名函数 function (a, b...

l_along
07/24
0
0
asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结

通常javascript代码可以与HTML标签一起直接放在前端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿;所以一般有良好开发习惯的程序员都会...

黄献
2012/11/04
0
0
【进阶3-1期】JavaScript 5 种 this 绑定全面解析

(关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导) 本周正式开始前端进阶的第三期,本周的主题是this全面解析,今天是第9天。 本计划一共2...

yygmind
11/29
0
0
JS高级之面试必须知道的几个点

深圳市人人聚财招前端啦 ~~~ 招前端,招前端,招前端,欢迎扫描加群,砸简历过来: 前言 这段时间突然发现JS原生好多东西都忘记了,但有些东西确实很重要,所以又重新再梳理一次。主要有函数的...

小小小
06/08
0
0
[JS] this, 你到底指向谁?

JS中, this的值取决于调用的模式, 而JS中共有4中调用模式: 1. 方法调用模式 当一个函数被保存为对象的一个属性时, 我们称它为一个方法, 当一个方法被调用时, this指向该对象, 如: var obj =...

武文海
2015/03/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL自增属性auto_increment_increment和auto_increment_offset

MySQL的系统变量或会话变量auto_increment_increment(自增步长)和auto_increment_offset(自增偏移量)控制着数据表的自增列ID。 mysql> show tables;Empty set (0.00 sec)mysql> CREATE TA......

野雪球
17分钟前
0
0
OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
今天
81
5
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
7
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部