在对象中执行函数

时间:2012-12-22 14:42:36

标签: javascript

我们可以在对象本身内执行一个函数吗?请参阅以下代码:

obj = {
     name:function(){alert("maizere");}
};

因为obj.name()也意味着相同,即访问对象并执行该功能。为什么不在对象内部执行,如下所示:

obj = {
     name:function(){
         alert("maizere");
     },
     name();
};

obj = new obj() == { obj() }开始吧?

当我尝试这个时,我没有成功。这里有什么不对或我错了吗?

6 个答案:

答案 0 :(得分:4)

以下表示法:

var obj = {};

被称为“对象文字”。它需要一个键/值对列表,作为对象的属性。

只有那个。

答案 1 :(得分:1)

您尝试的语法没有意义。

如果您希望立即执行某项功能,可以执行以下操作。这可以通过将您的函数转换为表达式而不是声明来实现:

obj={
  name: (function(){
    alert("maizere");
  })()
};

然而,这与:

不一样
obj={
  name: function(){
    alert("maizere");
  }
};

obj.name();

因为每个不同函数调用中的this会有所不同。前this wll指向全局对象(通常在浏览器中为Window),而后者this将指向obj

答案 2 :(得分:1)

对象文字不是类,因此根对象没有范围,与window对象类似。此外,对象文字的语法结构并不意味着这样做。它是异构列表键值对。像这样:

var o = { a : b };

JavaScript没有类。但是,with语句(很少使用)允许此行为(访问对象上的属性或方法而不指定对象root)。

var obj = { name: function() {} };

with ( obj ) {
    name();
}

但是这个结构不应该在代码中使用,因为它会导致问题。但作为对你的问题的回答,它完成了这项工作。

答案 3 :(得分:0)

是的,肯定是错的。

JavaScript对象由名称:值对组成,因此不允许您破坏该模式并执行其他操作。 请查看the details

答案 4 :(得分:0)

如果你想要一个基于类的语言意义上的构造函数,这可能是一个更好的方法:

// "class" definition and constructor
var MyObject = function() {
  this.name();
};
// method
MyObject.prototype.name = function() {
  alert("maizere");
};

// create an object instance of your "class"
var obj = new MyObject();

请注意,Javascript没有类。但是,该术语有时有助于理解Javascript构造函数的方法。

答案 5 :(得分:0)

JavaScript有几个内置对象,如String,Date,Array等。

对象只是一种特殊的数据,具有属性和方法。

访问对象属性的语法是:

objectName.propertyName

示例:

var message="Hello World!";
var x=message.length;

执行上述代码后,x的值为: 12

注意消息是对象。

这是另一个使用new实例化对象并向其添加属性的示例。

person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";

现在,这是一个类示例:

function HelloWorld(hour)
{
  // class "constructor" initializes this.hour field
  if (hour)
  {
    // if the hour parameter has a value, store it as a class field
    this.hour = hour;
  }
  else
  {
    // if the hour parameter doesn't exist, save the current hour
    var date = new Date();
    this.hour = date.getHours();
  }

  // display greeting
  this.DisplayGreeting = function()
  {
    if (this.hour >= 22 || this.hour <= 5) 
      document.write("Goodnight, world!");
    else
      document.write("Hello, world!");
  }  
}

在这个例子中,HelloWorld就是这个类。