js类(继承)(一)
2020-12-13 02:39
标签:blog class code java ext c 直接定义prototype似乎更有extends 的意韵 文章出自:http://www.cnblogs.com/frostbelt/archive/2012/04/01/2428014.html js类(继承)(一),搜素材,soscw.com js类(继承)(一) 标签:blog class code java ext c 原文地址:http://www.cnblogs.com/yichengbo/p/3719164.html
//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
function
Person(name){
//父类
this
.name=name;
this
.SayHello=
function
(){alert(
"Hello, I‘m "
+
this
.name);};
}
function
Employee(salary){
//子类
this
.salary=salary;
this
.ShowMeTheMoney=
function
(){alert(
this
.name+
" $"
+
this
.salary);};
}
Employee.prototype=
new
Person(
"Steve Jobs"
);
var
SteveJobs=
new
Employee(1234);
SteveJobs.SayHello();
//显示:I‘m Steve Jobs
SteveJobs.ShowMeTheMoney();
//显示:Steve Jobs $1234