在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,这样就不会出现找不到原来的对象。