这样obj2能不能说继承了obj1? 代码如下:var obj1={a:1,method:function(){return 123}}
var obj2={}
for (q in obj1){
   obj2[q]=obj1[q]
}
alert(obj2.method())

解决方案 »

  1.   


    //1.不是继承,是克隆
    //2.继承的唯一写法 
    function A() {this.name1 = "a";}
    A.prototype.getName1 = function(){return this.name1;}function B(){this.name2 = "b";}
    B.prototype = new A();//通过prototype继承
    B.prototype.constructor = B;//new B()后 对象的构造方法是自己B
    B.prototype.getName2 = function(){return this.name2;}var b = new B();
    alert(b.getName1())
    alert(b.getName2())//3.克隆功能的可以写个公共方法 Object.prototype.clone = function()
    {
         //具体业务
    }
    var obj = new B();
    obj.name2 = "2b";
    alert(obj.clone().getName2());
      

  2.   

    谢谢maweimaweima4,可继承的写法不唯一,有多种写法吧,还应该包括如何继承一个对象直接量的原型式继承。
      

  3.   

    javascript高级程序设计中有专门的章节来讲述了js继承的
      

  4.   

    现在基本明白了,这个就叫继承,我原来把继承的概念想的太单一了。 
    现在重新总结一下:
    只要让继承者有了被继承者的全部方法和属性,就叫继承,那种超类和基类 只算继承的一种。
    所以下面这个深拷贝就可以叫继承var obj1={a:1,method:function(){return 123}}
    var obj2={}
    for (q in obj1){
       obj2[q]=obj1[q]
    }
    alert(obj2.method())