我正在尝试理解如何将JavaScript函数组合成一个对象的语法。
问:这是正确的方法吗?
我问这个问题的原因是因为我正在Firebug中查看它,我希望能够深入查看myVar和myVariable的值,但Firebug只说"this“是一个对象对象。
var myObject = {
init: function() {
var myVar = 1;
myObject.myVariable = 2;
console.log('"this" when called as an object: ' + this);
}
}
myObject.init();另外,在声明时直接调用它的有趣的小语法是什么?关于()的一些东西,但是当我删除最后一行并将()放在声明的末尾时,我得到了一个语法错误。
发布于 2010-12-28 02:48:28
这将创建一个字符串:
'"this" when called as an object: ' + this 但是this不是字符串,所以会调用它的toString()原型。这就是为什么你只能看到[object Object]的原因。
如果您想让Firebug显示实际的对象,可以执行一个简单的console.log(this),或者直接使用console.dir(this)查看内容。
发布于 2010-12-28 02:51:48
“有趣的小语法”在这里并不适用,因为您实际上并不是在创建一个“函数对象”--它只是一个具有属性值的对象,它的值是对一个函数对象的引用。
然而,尽管它在Stackoverflow上已经做得很死了,但你可能正在谈论这样的事情:
var myobject = (function() {
var something = { whatever: "for example" };
return {
init: function() {
this.foo = "hello";
// initialize
},
getSomething: function() { return something.whatever; }
};
})();现在"myobject“是通过调用一个匿名函数来初始化的,该函数将在该语句之后立即被抛出。但是,由函数调用形成的闭包仍然有效。
发布于 2010-12-28 02:50:09
下面是JavaScript object creation的一个很好的参考资料
https://stackoverflow.com/questions/4540975
复制相似问题