<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 是根据什么来确定对象的类型的呢? 是构造器还是其他的什么?
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 是根据什么来确定对象的类型的呢? 是构造器还是其他的什么?
var oStringObject = new String("hello world");
alert(oStringObject instanceof String); //输出 "true"
alert(typeof string==oStringObject ); //输出 "false"
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);
还有像知道的是我上面提的,关于对象的创建的细节步骤!
<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