var obj = function () { this.name = "test"; this.age = "100"; } //obj.prototype = { //}; var o = new obj(); document.writeln(o.constructor);/
上面代码输出:function () { this.name = "test"; this.age = "100"; }
var obj = function () { this.name = "test"; this.age = "100"; } obj.prototype = { }; var o = new obj(); document.writeln(o.constructor);
上面代码输出:function Object() { [native code] }
请问为什么加了一行代码“obj.prototype = { }”输出后的结果就不一样了。
谢谢各位了。。。
//JavaScript是通过原型(prototype)实现继承 //obj.prototype就是原型指向 {}相当于 new Object();而Object中是NULL var obj = function() { this.name = "test"; this.age = "100"; }; //1. obj.prototype = { }; //2. //obj.prototype = new Object(); //1和2其实是一样的, //1的结果为:function Object() { [native code] } //2的结果为:function Object() { [native code] } //如需深入的话,就看 汤姆大叔 <<深入理解JavaScript系列 var o = new obj(); document.writeln(o.constructor);
加了obj.prototype = { }后,等于把obj的原型链指向了一个空对象{},就是Object对象,因此输出的结果就成了Object对象的了。obj.prototype可以理解是对象原型的一个地址引用,里面包含着对象的构造函数以及属性方法,你把它修改指向了另一个对象,结果自然也就变了。
学习 了