搜尋

首頁  >  問答  >  主體

javascript - Object.prototype 声明方式的区别

Object.prototype = {
    handle: function(){}
}

Object.prototype.handle = function(){}

有什么区别?我在chrome控制台打出来看第一种生命方式没有constructor

大家讲道理大家讲道理2788 天前593

全部回覆(4)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-11 10:12:13

    肯定是有区别的
    第一种把一个对象引用给了Object的prototype,这样直接覆盖了原型本来就有的引用
    第二种是给Object的prototype加了一个handle的属性,并没有改变引用

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-11 10:12:13

    第一种是直接给Object.prototype赋了一个新的值,引用了新的对象,将原来的Object.prototype抛弃了;第二种是给原来的Object.prototype对象指派了一个新的属性,并没有改变Object.prototype的引用。因为一个普通的对象是没有constructor属性的,constructor是function的构造器,所以你第一种方式给Object.prototype指定为一个普通的对象,当然就没有constructor啦。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-11 10:12:13

    函数fun建立后fun.prototype.constructor指向fun自身,constructorprototype上的一个属性,你第一种方式直接把prototype指向另外一个对象,constructor自然是没有了。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-11 10:12:13

    第一种相当于完全重写了原型对象,是不会有constructor的,如果需要,需要自己显式指定

    第二种只是在默认的原型对象上增加一个属性

    回覆
    0
  • 取消回覆