function Dog(name) {
    this.name = name;
}
Dog.prototype = {
        constructor: Dog,
        shout: function() { /* ... */ },
        run: function() { /* ... */ }
};constructor: Dog, 这个的作用是什么 求解析. 应该是维护原型链之类的 但具体的作用不知道..

解决方案 »

  1.   

    作用在这里:
    var puppy = new Dog('Wang Wang');
    alert(puppy.constructor);// 输出这个对象的构造函数Dog
    如果不加这一句,那么这里的将不会保存一个指向他的构造函数的引用(至少IE是这样的)。
    因为这个属性很容易就被更改,所以火狐等非IE浏览器另有一个“可访问的”属性叫__proto__它跟constructor的功能一样,但是更可信赖,只是IE不支持。
      

  2.   


    恩 刚才看了下 
    Dog.prototype.shout = function(){}
    这样添加 可以
    Dog.prototype = {}
    这样相当于 把prototype覆盖了.. constructor就返回Object了
    所以要修改下.
      

  3.   


    <script type="text/javascript">
    function Person(name){
    this.name = name;
    }Person.prototype.getName = function(){
    return this.name;
    }var p = new Person('Tom');console.log(p.constructor === Person);
    console.log(Person.prototype.constructor === Person);
    console.log(p.constructor.prototype.constructor === Person);
    // 想问下constructor 这个内部到底怎么解析呀?
    Person.prototype.constructor === Person 为什么会指向自身?
    这个与new的机制有关系么?
    </script>
      

  4.   


    更改了prototype就要重新赋值,要不就指向Object了
      

  5.   


    谁能解析下construct的内部机制? 比如什么时候产生的 怎么起作用的?
      

  6.   

    Person是个函数,JS里面是一种引用类型,就是栈里存的只是它的指针。
    要理解这个你要先理解定义类的方法要用Person.prototype.fna=fnb(){};是怎么节约内存空间的。
    暂时你可以把Person.prototype看成Person的一个隐藏的可修改的父类,而Person是从那继承过来的,虽然事实不是这样。以后你就会明白
      

  7.   

    当NEW的时候就产生了,如果你没有改变他的原型对象的话,他NEW产生出来的对象的CONSTRUCTOR还是指向你的构造函数的,但当你的PROTOTYPE所指向的对象改变的话,他也同时改变了,不知道我理解的对不。
      

  8.   

    在JavaScript中,constructor可用来实现基于原型的继承。所有构造器都有一个相关联的原型,所有由构造器创建的对象都隐含一个到该原型的引用(称为对象原型)。可以通过程序表达式[object].constructor来返回该对象由谁创建(即它的构造器是什么),可以通过程序表达式[object].constructor.prototype来返回该对象隐含的关联原型引用。