JS中函数的四种调用模式

版权声明:本文为Banana原创文章,未经Banana允许不得转载。评论请留下你认真观看后的想法或者意见,非常感谢! https://blog.csdn.net/qq1515312832/article/details/82078015

在C#或JAVA等这样的语言中,方法和函数都是一个意思,但是在JS中却有着一定的区别,JS中一共分为四种形态,分为函数形态、方法形态、构造器与上下文模式,下面就简单介绍一下这四种模式的法。

函数形态

var foo = function() {
	alert(this);
};
foo();

此时this是window对象 

方法形态

var foo =function(){
    alert(this);
}
var o={};
o.foo=foo;
o.foo();

 此时alert的便为object对象

构造器

造器其实就是构造函数

var Person = function () {
	this.age = 19;
	this.name = "着小虎";
	return "{}";
};
var p = new Person();
alert(p.name);

构造函数要看返回值是什么类型。如果返回值是一个对象,那么就按照返回值来返回,如果返回值不是一个对象就忽略返回值,直接返回this

1.new创建了对象,并且开辟了空间

2.将对象的引用地址传递给参数,在函数中用this接受

3.构造方法之行结束,返回this

上下文模式

语法:函数.apply(对象,[参数列表])

var foo1 = function (a, b) {
    alert(this);
    return a > b ? a : b;
};
var num = foo1.apply(null, [121, 34]);//全局调用,此时foo1中alert(this)出来的是window
var num = foo1.apply({}, [121, 34]);//方法调用,此时foo1中alert(this)出来的是object
alert(num);

that对象

that对象
var lib = {
	test:function() {
		var that = this;
		(function(){
			//that.xxx
		})();
	}
};

var that=this就是将当前的this对象复制一份到that变量中。

this对象在程序中随时会改变,而var that=this之后,that没改变之前仍然是指向当时的this,这样就不会出现找不到原来的对象。

猜你喜欢

转载自blog.csdn.net/qq1515312832/article/details/82078015