this
当使用在函数中时,this指代当前的对象,也就是调用了函数的对象。如果在一个对象上使用点或者方括号来访问属性或方法,这个对象就成了this。如果并没有使用“点”运算符调用某个对象,那么this将指向全局对象(global object)。
new
它和this密切相关。它的作用是创建一个崭新的空对象,然后使用指向那个对象的this调用特定的函数。注意,含有this的特定函数不会返回任何值,只会修改this对象本身。new关键字将生成的this对象返回给调用方,而被new调用的函数成为构造函数。习惯的做法是将这些函数的首字母大写,这样用new调用他们的时候就容易识别了。
apply
第一个参数被当作函数内部中的this使用,第二个参数是一个函数参数的数组。如,
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
var me = { firstName: "Kris", lastName: "Lee"};
Person.apply(me, ["John"]); // me是 {firstName: "John", lastName: undefined}
call
同apply相似,不同的是参数不以数组的方式作为call的第二个参数:
var me = { firstName: "Kris", lastName: "Lee"};
Person.call(me, "John", "Snow"); // me是 {firstName: "John", lastName: "Snow"}
bind
var a = function (arg1, arg2) {
// function content
};
var b = a.bind(this, 12);
// equals
var b = function () {
var arguments = [12]
}