侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Javascript函数4种调用模式

2024-05-14 星期二 / 0 评论 / 0 点赞 / 90 阅读 / 2593 字

// 函数//编程,就是将需求分解变成一组函数与数据结构的技能//javascript是一门基于原型继承的语言;//javascript 是一门函数式的面向对象编程语言,所有函数开源拥有方法// 函数

// 函数		//编程,就是将需求分解变成一组函数与数据结构的技能		//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

广告 广告

评论区