不同的函数调用方式
方法调用模式
A= {
a:'a vairalbe',
B: function() {
//
}
}
A.B();
这种调用模式中,B函数中的this指向调用它的对象,A
函数调用模式
var A = function ()
{
var a = 'a variable';
var B = function() {
///
};
B();
};
A();
在这种情况下,B中的this并不指向其外层函数this变量,而是指向全局对象。这是js语言设计上的一个错误,会为开发带来很多麻烦,有一种方法,来改善这一问题。我们创建一个变量,来手动指向外层函数的this变量。 myObject.double = function() {
var that = this;//解决方法
var helper = function() {
that.value = add(that.value, that, value);
};
helper();
};
myObject.double();
document.writeln(myObject.value);//6
构造器调用模式
由于很多人还是习惯基于类的对象,而js是基于原型的对象,因此js提供了一套类似于基于类的语言的对象构建语法,通过new 关键字创建对象。Apply调用模式
减少全局变量污染
var MYAPP = {};//唯一的全局变量
MYAPP.stooge = {
firstName: 'joe',
lastName: 'Howard'
};
MYAPP.flight = {
airline: 'Oceanic',
number: 815,
departure: {
IATA:'SYD',
TIME: '2004-09-22 14:55',
}
};