为什么Array无法使用文字添加原型?

时间:2015-07-28 02:17:28

标签: javascript

var a=[1,2,3,4]

function Demo(){}

Array.prototype={
  foo:function(){
    alert(1)
  }
}//a.foo is not a function

Array.prototype.foo=function(){
  alert(1)
}//alert(1)

a.foo()

Demo.prototype={
  foo:function(){
    alert(1)
  }
}

var b=new Demo()
b.foo()//alert(1)

为什么Array无法用文字添加原型?另外,为什么我使用构造函数时它会起作用?

这是一个例子: https://jsbin.com/zowalu/edit?js,console

1 个答案:

答案 0 :(得分:2)

您无法替换Array.prototype对象(这是您在第一个示例中尝试执行的操作),因为Array.prototype是只读的。

你的第二个例子是有效的,因为你只是在原型中添加一个键,而不是替换它。

第三个例子有效,因为Demo是你设计的一个对象,原型不是只读的。