写了一段测试代码
还是没弄明白
求指点...//两种创建新对象的函数
Object.f1 = function(o) {
    var F = function() {};
    F.prototype = o;
    return new F();
};Object.f2 = function(o) {
    var newObject = {};
    newObject.prototype = o;
    return newObject;
};//创建原始对象
var o = { x:"o_x", y:"o_y" };//通过三种不同方法创建新对象
var o_f0 = o; 
var o_f1 = Object.f1(o);
var o_f2 = Object.f2(o);//改写对象属性
o.x = "f0.x2";
o_f1.x = "f1.x2";
o_f2.x = "f2.x2";//分组显示对象的属性和方法
console.group("f0");
console.dir(o_f0);
console.groupEnd("f0");console.group("f1");
console.dir(o_f1);
console.groupEnd("f1");console.group("f2");
console.dir(o_f2);
console.groupEnd("f2");firebug测试结果:

解决方案 »

  1.   

    简单的说prototype是类的原型__proto__是具体实例化的对象的原型链,调用某个对象的是方法的时候,如果自身没有就会去__proto__里面去找,__proto__本身也有__proto__,如果还是没有,就继续找下去,就成了链型结构。你的例子里的f2的prototype只是你强加给f2这个对象的属性,跟类的prototype不是一回事。只是名字一样而已。
      

  2.   

    要说的东西比较多你应该 仔细看看  function  object 的区别
    在看看 prototype 是什么意思
      

  3.   

    prototype:原型
    __proto__:构造函数原型
    仔细读一下上面的字,意思就明白的差不多了。
    function Person(){
    }
    var p  = new Person();
    alert(p.constructor.prototype==p.__proto__);
    因为p实例的构造函数是Person,所以p.constructor.prototype会等于p.__proto__。
    个人认为__proto__类似constructor.prototype的简写。
      

  4.   

    __proto__属性并不兼容,只是火狐支持,所以你在它上面花精力实在没必要