var ListData = {
name:"John",
sayName:function(){
alert(this.name)
}
}
var ListData2 = {
name:"John2",
}
ListData.call(ListData2);
ListData2.sayName();
也就是让ListData2 继承ListData,并可以调用ListData的方法,为什么错了?求解释!
name:"John",
sayName:function(){
alert(this.name)
}
}
var ListData2 = {
name:"John2",
}
ListData.call(ListData2);
ListData2.sayName();
也就是让ListData2 继承ListData,并可以调用ListData的方法,为什么错了?求解释!
{
this.name="john";
this.sayName = function()
{
alert(this.name)
}
}var ListData2 = function()
{
this.name="john2"
}ListData2.prototype = new ListData();var listData2 = new ListData2()
listData2.sayName()
这样是继承
this.name = "Parent";
this.sayName = function(){
alert(this.name)
}
}
function Child(){
this.name = "Child";
Parent.call(this);
}
var child = new Child();child.sayName();为什么这样可以?
function Parent(){
this.name = "Parent";
this.sayName = function(){
alert(this.name)
}
}
function Child(){
this.name = "Child";}
Parent.call(Child);
var child = new Child();
child.sayName();这样就不行?
Parent.call(Child);这句是绑定到Child类上面,当然意思不一样
this.name = "Parent";
this.sayName = function(){
alert(this.name)
}
}
function Child(){
this.name = "Child"; }
Parent.call(Child);
alert(Child.name);
所以这样就能打印出来了
function Parent(){
this.name = "Parent";
this.sayName = function(){
alert(this.name)
}
}
function Child(){
this.name = "Child";}
Parent.call(Child); //你这样相当于给window对象的Child定义了一个name和sayName方法 因为js中函数也是一个对象
var child = new Child();//new这个 这回走Child()函数 其他的什么都没做
child.sayName(); // 这句话就错了 你换成 alert(window.Child.sayName()) 应该有alert值的 你就知道了
不是这样继承的,继承要用prototype
楼主要的是不是这意思?var ListData = {
name:"John",
sayName:function(){
alert(this.name)
}
}
var ListData2 = {
name:"John2",
}Object.extend=function(oldobj,newobj){
for(var name in ListData ){
newobj[name]=oldobj[name];
}
return newobj[name];
};
Object.extend(ListData ,ListData2);
//这样ListData2就有sayName了
ListData2.sayName();另外建议楼主google一下call的用法吧!
name:"John",
sayName:function(){
alert(this.name)
}
}
var ListData2 = {
name:"John2",
}Object.extend=function(oldobj,newobj){
for(var name in ListData ){
newobj[name]=oldobj[name];
}
return newobj;
};
Object.extend(ListData ,ListData2);
//这样ListData2就有sayName了
ListData2.sayName();
通过Object.create方法实例化。
可以看我的博文
http://www.iteye.com/topic/892002
function Car(Color)
{
this.color=Color;
}
car.prototype.saycolor = function() {alert(this.color);};function CarA(Color,Name)
{
Car.call(this,Color);
this.name = Name;
}
CarA.prototype = new Car();
CarA.prototype.sayname = function() {alert(this.name);};//实现继承CarA继承Car
</script>
this.name=name;
}function b(name,age){
this.age=age;
//他继承a()
a.call(this,name,age)
}
var n = new b("c",18);
alert(n.name+"\n"+n.age)当然没有参数可以直接用prototype
this.say = function(){
alert(this.say.caller)
}
this.say();
}
Test();为什么弹出来的是Test的整个代码,而不是Test这个名字?