Почему ключевое слово «function» необходимо перед именем объекта? Все объекты являются действительными? - PullRequest
2 голосов
/ 28 июля 2011

Когда мы создаем такой объект

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

Мы пишем ключевое слово «function» перед тем, как имя объекта необходимо?Все объекты являются функциями в реальном?Разве мы не можем написать прямое имя объекта, как это?

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

Ответы [ 7 ]

4 голосов
/ 28 июля 2011

Нет, не все объекты являются функциями.(Однако все функции являются объектами.)

Здесь obj не является функцией:

var obj = {
    foo: "bar"
};

Нор dt здесь:

var dt = new Date();

Ключевое слово function необходимо для того, чтобы сказать «что следует за объявлением функции или выражением функции».Это всего лишь часть основного синтаксиса JavaScript.

4 голосов
/ 28 июля 2011

в первом случае функция может использоваться как конструктор для объекта. Таким образом, вы можете иметь:

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

3 голосов
/ 28 июля 2011

Одной из причин, очевидно, является неоднозначность:

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

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

foo();

alert cake, burb, cake, поскольку 2nd foo() {...} - это просто обычный вызов функции, за которым следует регулярный составной оператор, заключенный в{}.

2 голосов
/ 28 июля 2011

function объявляет функцию.Из-за того, как работает JavaScript, функцию можно использовать как класс для создания объектов.

Но если вы действительно просто хотите объект, используйте волнистые скобки, например:*

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

Но ваше понимание JavaScript требует большой работы: прочитайте несколько книг об этом.

1 голос
/ 29 апреля 2018

В Javascript мы можем создавать объекты различными способами:

1) Литералы

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

2) Функции конструктора (функции, имеющие это)

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

let specificEmployee = новый сотрудник ("тирион", 34);

Функция конструктора всегда должна иметь новый оператор для создания объекта

3) Использование конструктора объектов

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

В javascript каждая вещь, кроме примитивного типа, является экземпляром, унаследованным от конструктора Object.

0 голосов
/ 28 июля 2011

Вы можете написать:

myObject = {
Properties and methods here----
}
0 голосов
/ 28 июля 2011

Нет, это не обязательно. Вы также можете иметь:

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

Тестовый случай: http://jsfiddle.net/rKunx/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...