我有一个关于JavaScript函数的问题。考虑以下两个函数定义:
// run time definition
var foo_1 = function () {
console.log("I ma foo 1");
}
// parse time definition
function foo_2 () {
console.log("I ma foo 2");
}
在JavaScript中,每个东西都是一个对象,那么在上面的代码中,是否创建了名为foo_1
和foo_2
的两个新对象?如果是,它们的原型对象是什么,这些对象何时创建?
我也很难理解var obj={}
和var foo=function(){}
之间的真正区别。两者都是对象,但第一个具有 "type" Object
,而第二个具有类型function
。这是正确的吗?
根据我的书《JavaScript高级程序设计》,每个新的字面量对象都链接到默认为空对象的Object.prototype
。为了验证这种行为,我尝试运行以下脚本:
Object.prototype
//Object {}
Object.prototype = { name: "This is an experiment"};
//Object {name: "This is an experiment"}
function test() { conosle.log("Test"); }
test.prototype;
//Object {}
为什么test.prototype
的结果是一个空对象?
最后,我想知道这些函数定义是否等同于以下代码:
this.foo = function() {
console.log("I ma foo");
}
如果是这样,那么“this”指的是什么?