[code="javascript"]
var F = function(){}
var f = new F();
alert(f.constructor);
[/code]
[code="javascript"]
function F(){}
var f = new F();
alert(f.constructor);
[/code]
上面两个打印出来的值不同,请问为什么?希望能给我constructor的详细资料。谢谢。
显示的不同,但实质是一样的
你试试这个就知道了:
[code="js"]
var A = function(){};
function B(){}
alert(A);
alert(B);
[/code]
JS中的constructor本身本无多大用处,也可以被随意修改。
之所有创建出来的实例都能通过constructor访问到构造方法,是因为:
函数(F)在定义时,会自动创建一个空对象作为prototype属性,它的constructor属性为自身。
使用它(F)创建出来的实例本身并无constructor这个属性,而是它的原型链指向F.prototype,所以也能访问到。
[code="js"]
function F(){};
alert(F.prototype.constructor === F);
[/code]
如果你改了prototype属性,就会发现construcotr不好使了:
[code="js"]
function F(){};
F.prototype = {test:1};
var a = new F();
alert(a.constructor === Object.prototype.constructor);
[/code]