关于constructor属性

写个书上的例子

        function Person(name,age,job){
            this.name=name;
            this.age=age;
            this.job=job;
            this.friends=['tom','jim'];
        }

        Person.prototype={
            constructor:Person,
            //把上面这条代码删除,代码可以执行。然后我让它随便指向一个构造函数,它依然正常执行。它好像在这里似乎没什么卵用。
            //那么constructor属性,具体在哪种情况下体现的作用会比较明显。不设置它方法就不能运行。
            sayName:function(){
                alert(this.name);
            }
        }

        var person1 = new Person('Nicholas',29,"teacher");
        var person2 = new Person("Greg",27,'Doctor');

        person1.friends.push("van");
        alert(person1.friends)
        alert(person2.friends)
阅读 2.6k
3 个回答

一般在使用 对象字面量方法,就像你写的这样,你不写的话,constructor 指向的是 Object

    Person.prototype={
            constructor:Person,
            //把上面这条代码删除,代码可以执行。然后我让它随便指向一个构造函数,它依然正常执行。它好            像在这里似乎没什么卵用。
            //那么constructor属性,具体在哪种情况下体现的作用会比较明显。不设置它方法就不能运行。
            sayName:function(){
                alert(this.name);
            }
        }

图片描述

当你在试图在原型对象内试图调用constructor的时候就必须要有constrctor属性了。

推荐问题
宣传栏