首页 新闻 会员 周边 捐助

关于javascript 原型问题。

0
悬赏园豆:20 [待解决问题]
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 = { }”输出后的结果就不一样了。

 

谢谢各位了。。。

王俊1234的主页 王俊1234 | 初学一级 | 园豆:57
提问于:2013-12-05 14:36
< >
分享
所有回答(3)
1
       //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);
秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-05 15:07
0

加了obj.prototype = { }后,等于把obj的原型链指向了一个空对象{},就是Object对象,因此输出的结果就成了Object对象的了。obj.prototype可以理解是对象原型的一个地址引用,里面包含着对象的构造函数以及属性方法,你把它修改指向了另一个对象,结果自然也就变了。

RK_CODER | 园豆:202 (菜鸟二级) | 2013-12-05 15:10
0

学习 了

Albert Fei | 园豆:2102 (老鸟四级) | 2013-12-05 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册