与 Function 和 Object 相关的有趣代码
时间:2010-05-07 12:29:00
代码片段一:
alert(Function instanceof Object); // true
alert(Object instanceof Function); // true
Function 是 Object 的实例,Object 也是 Function 的实例,好“纠缠”的关系。
代码片段一:
alert(Object.forEach); // undefined
Function.prototype.forEach = function(object, block, context) {
for (var key in object) {
if (typeof this.prototype[key] == "undefined") {
block.call(context, object[key], key, object);
}
}
};
alert(Object.forEach);
alert(Function.forEach);
alert(Object.forEach === Function.forEach); // true
给 Function 设置的原型方法 forEach,“有趣”的是 Object 也能够获取。
至于为什么可以从 JavaScript Object layout 图中获取部分解答:
看懂上图了没?如果看懂了,留道思考题给大家:
function Foo() {};
var foo = new Foo();
alert(foo instanceof Foo); // ?
alert(foo instanceof Object); // ?
alert(foo instanceof Function); // ?
alert(Foo instanceof Function); // ?
alert(Foo instanceof Object); // ?