【发布时间】:2012-03-17 04:46:16
【问题描述】:
据我了解,函数的原型属性是您向从该函数实例化的所有对象添加方法/属性的方式。
所以当我尝试这样的事情时
function Person(){}
Person.prototype.saySomething = function(){ alert( "hi there" ); }
Person.saySomething();
我收到错误“Person.saySomething 不是函数”,这是有道理的,因为我没有在 Person 对象实例上执行该函数。
但是为什么运行下面的代码会起作用呢?
Function.prototype.sayHi = function(){ alert( "hi!" );}
Function.sayHi();
【问题讨论】:
-
您可能只是将其用作示例,但值得注意的是,对原生对象进行原型设计是个坏主意。
-
我明白了。我在一些框架中见过它,想知道它是如何工作的
-
@jbabey:什么时候是个坏主意?总是?我不得不不同意。
-
@jbabey 我完全不同意。小心使用时,这是该语言更强大的方面之一。
-
@amnotiam 你是对的,我的陈述有点过于宽泛了。这是decent article
标签: javascript prototype