原型问题3—构造函数返回对象

function P(){
        return {
            test:'tom'
        }
    }
    var p1 = new P(),
        p2 = P();
    console.log(p1.test);//tom
    console.log(p2.test);//tom

这个是讲得构造函数返回值得问题:

如果存在返回值则检查其返回值是否为引用类型,如果为非引用类型,如(string,number,boolean,null,undefined),上述几种类型的情况与没有返回值的情况相同,实际返回实例化的对象

所以构造函数P返回了一个引用值,所以改变了原有的引用指向;

console.log(p1.__proto__ === P.prototype);  //false

原文地址:https://www.cnblogs.com/jokes/p/9241327.html