我们可以在对象本身内执行函数吗?请看下面的代码:
obj = {
name:function(){alert("maizere");}
};因为obj.name()也意味着同样的意思,即访问对象并执行函数。为什么不在对象本身内部执行,就像这样:
obj = {
name:function(){
alert("maizere");
},
name();
};从obj = new obj() == { obj() }开始,对吗?
当我尝试这个的时候,我没有成功。这里有什么问题吗?还是我错了?
发布于 2012-12-22 22:47:15
您尝试的语法没有任何意义。
如果您希望立即执行函数,可以执行以下操作。它的工作原理是将函数转换为表达式,而不是声明:
obj={
name: (function(){
alert("maizere");
})()
};但是,这并不等同于:
obj={
name: function(){
alert("maizere");
}
};
obj.name();因为每个不同函数调用中的this都是不同的。对于前者,this将指向全局对象(在浏览器中通常为Window ),而在后一种情况下,this将指向obj。
发布于 2012-12-22 22:45:17
以下表示法:
var obj = {};被称为“对象文字”。它需要一个键/值对的列表,它是对象的属性。
仅此而已。
发布于 2012-12-22 22:50:04
对象文字不是类,因此不存在根对象的作用域,这与window对象类似。此外,对象字面量在句法结构上并不具有这样做的意图。它是一个异构的键值对列表。如下所示:
var o = { a : b };JavaScript没有类。但是,with语句(很少使用)允许这种行为(在不指定对象根的情况下访问对象的属性或方法)。
var obj = { name: function() {} };
with ( obj ) {
name();
}但是这个结构不应该在代码中使用,因为它会导致问题。但作为对您问题的回答,它确实起到了作用。
https://stackoverflow.com/questions/14003743
复制相似问题