//call()
//调用一个对象的一个方法,以另一个对象替换当前对象。
//call([thisObj[,arg1[, arg2[, [,.argN]]]]])
//参数
//thisObj
//可选项。将被用作当前对象的对象。
//arg1, arg2, , argN
//可选项。将被传递方法参数序列。
//说明
//call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
//如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
function Person(name){ //父类
this .name=name;
this .SayHello= function (){alert( "Hello, I‘m " + this .name);};
}
function Employee(name,salary){ //子类
Person.call( this ,name); //将this传给父构造函数
this .salary=salary;
this .ShowMeTheMoney= function (){alert( this .name+ " $" + this .salary);};
}
var BillGates= new Person( "Bill Gates" );
var SteveJobs= new Employee( "Steve Jobs" ,1234);
BillGates.SayHello(); //显示:I‘m Bill Gates
SteveJobs.SayHello(); //显示:I‘m Steve Jobs
SteveJobs.ShowMeTheMoney(); //显示:Steve Jobs $1234
alert(BillGates.constructor == Person); //true
alert(SteveJobs.constructor == Employee); //true
|