为什么在对象名称之前需要“function”关键字?所有对象都是真实的功能?

时间:2011-07-28 10:22:36

标签: javascript object

当我们制作这样的对象时

function myObject(){  
Properties and methods here----
}; 

在对象的名称有必要之前写“function”关键字吗?所有对象都是真实的功能?我们不能写这样的直接对象名吗?

myObject(){  
Properties and methods here----
}; 

7 个答案:

答案 0 :(得分:4)

在第一种情况下,该函数可以用作对象的构造函数。所以你可以:

function Person(name) {
    this.name = name
}

Person.prototype = {
    // methods can go in here
}

person1 = new Person("bob");
alert(person1.name) // alerts "bob"

您也可以将函数用作对象。例如:

function myObject() {
    return myObject.test;
}

myObject.test = "bob";
alert(myObject()) // would alert "bob"

但所有对象都不是函数。

var someObject = {
     name: "bob",
     moody: "sad"
}

alert(someObject.name); // alerts "bob"
try {
    someObject();
} catch (er) {
    alert(er);  // alerts "TypeError: object is not a function"
}

我建议你看一下https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

答案 1 :(得分:4)

不,并非所有对象都是功能。 (但所有功能都是对象。)

此处,obj不是函数:

var obj = {
    foo: "bar"
};

此处dt

var dt = new Date();

function关键字是必要的,以便说“以下是函数声明或函数表达式”。它只是JavaScript基本语法的一部分。

答案 2 :(得分:3)

一个原因显然是歧义;

function foo() 
{
    alert("cake") 
}

foo()
{
    alert("burb");
}

foo();

提醒cakeburbcake,因为第二个foo() {...}只是一个常规函数调用,后跟{}中包含的常规复合语句。< / p>

答案 3 :(得分:2)

function声明一个函数。由于JavaScript的工作方式,函数可以用作来制作对象。

但是如果你真的只想要一个对象,请使用波浪形的大括号,如下所示:

var myObject = {
  x : 30, // a property
  getX : function() { // a method
     return this.x;
  }
}

但是你对JavaScript的理解需要做很多工作:阅读一些关于它的书。

答案 4 :(得分:1)

在Javascript中,我们可以通过各种方式创建对象:

1)文字

   let employee = {"name": "tyrion","age":34}

2)构造函数(具有此功能的函数)

   function employee(name, age) {
     this.name = name;
     this.age = age;
   }

让specificEmployee =新员工(“tyrion”,34);

构造函数总是需要一个新的运算符来创建一个对象

3)使用Object构造函数

   let employee = Object.create(null);
   employee.name = "tyrion";
   employee.age = 34

在javascript中,除了原始类型之外的所有东西都是从Object构造函数继承的实例。

答案 5 :(得分:0)

不,不是必需的。你也可以:

var myObject = {  
   Prop1: "Value1", 
   Prop2: "Value2", 
   Method1: function() {
      alert("hello");
   }
};

实时测试案例:http://jsfiddle.net/rKunx/

答案 6 :(得分:0)

你可以写:

myObject = {
Properties and methods here----
}