鉴于 ES 5.1 标准规定...
1) http://es5.github.com/#x13.2脚下的注释
NOTE A prototype property is automatically created for every function,
to allow for the possibility that the function will be used as a constructor.
2) http://es5.github.com/#x15.3.5.2
NOTE Function objects created using Function.prototype.bind do not have
a prototype property.
(这意味着所有其他功能都可以)
...为什么内置函数不再具有原型属性?:
[].push.prototype; //undefined
Math.max.prototype; //undefined
此外,即使为它们分配了原型属性,这些内置函数也不能用作构造函数:
[].push.prototype = {};
[].push.prototype; //[object Object]
new [].push(); //TypeError: function push() { [native code] } is not a constructor
相反,从用户定义的对象中删除原型属性仍然允许它用作构造函数,并且实际上将通用对象分配给生成的实例的 [[prototype]]:
var A = function() {};
A.prototype = undefined;
A.prototype; //undefined
(new A()).__proto__; //[object Object]
内置函数现在被子类型化为构造函数或函数吗?
[在大多数现代浏览器中测试]