<script>
function f() {
this.a = "b";
}

function g() {
this.b = "c";
} f.prototype.constructor = g;
var v = new f(); //v中存在的属性还是 a
alert(v.b);//显示 "undifined"
alert(v instanceof g);//显示"false"
  </script>
首先,我说一下我对创建对象过程的理解,首先创建一个空的对象 {},然后通过空函数中的原型的构造方法来初始化对象的属性和方法,我验证之后发现和我想的不一样,我认为修改了构造之后,填充的属性也会变。我想请哪位高手能不能帮我分析下,对象创建的具体细节,和我上面的分析所存在的错误,谢谢! 
在线等待哦,对了,另外,我想知道的是 typeof,instanceof 是根据什么来确定对象的类型的呢? 是构造器还是其他的什么?

解决方案 »

  1.   

    typeof,instanceof 下面的列子应该很好理解~~~~:
    var oStringObject = new String("hello world");
    alert(oStringObject instanceof String); //输出 "true"
    alert(typeof string==oStringObject ); //输出 "false" 
      

  2.   

    function f(e) { 
    this.a = "b"; 
    g.call(this,e);

    function g(e) { 
    this.b = e; 

    f.prototype=g ; 
    var v = new f('1'); 
    var d= new f('w');
    alert(v.b);
    alert(d.b);
      

  3.   

    多谢2楼兄弟的回复,我知道 typeof ,instanceof是什么含义,我想知道的是 这些是根据什么来进行判断的,是是构造器还是其他的什么?
    还有像知道的是我上面提的,关于对象的创建的细节步骤!
      

  4.   

    难道 CSDN 就没一个人能够解决这个问题?
      

  5.   


    <script>function f() {
    this.a = "b";
    }function g() {
    this.b = "c";
    }f.prototype.constructor = g;//只是更改了f原型的构造,并未使得f和g之间建立实际的联系var v = new f();
    alert(v.b);//显示 "undifined"
    alert(v instanceof g);//显示"false"
    alert(v.constructor);//可以看到来自f实例v的构造函数被指向到了g//修正
    f.prototype = new g();//将f的原型设定为g的实例,从而开通了f与g的原型链通道
    var v = new f();
    alert(v.b);//显示 "c"
    alert(v instanceof g);//显示"true"</script> 
    更多关于原型链可以参见:http://www.jslab.org.cn/?tag=prototypeChain