引用对象的属性

时间:2017-05-22 16:48:58

标签: javascript

所以我是这里的初学者,我正在尝试根据教程创建一个网络应用程序。基于我所学到的,在一个对象中,我可以使用代码this.property-name

来引用该对象的属性。

根据下面的代码工作,只是想确认我的假设“这个.todos'通过代码this.todos.push创建为下面的对象         ({           todoText:todoText,           完成:false,         });

因此,我可以引用this.todos.property-name,就像this.todos.todoText和this.todos.completed toDoList对象中的任何地方一样?

我不知道我在哪里搞砸了。 谢谢一群人。

var toDoList = 
{
  todos: [],
  displayToDo: function()
  {
      if (this.todos.length ===0)
       {
        console.log ("your todos is empty")
        }
      else
        {
          console.log('My To Dos:');
          for (var i=0; i<this.todos.length; i++)
          {
            if (this.todos[i].completed === true)
            {
              console.log ('(x)', this.todos[i].todoText);
            }
            else
            {
              console.log ('( )', this.todos[i].todoText);
            }
         }
        }
  },

  addToDo: function(todoText)
  {
    this.todos.push
    ({
      todoText: todoText, 
      completed: false,
    });
    this.displayToDo();
  }, 


  changeToDo: function(position, todoText)
  {
    this.todos[position].todoText = todoText;
    this.displayToDo();
  }, 
  deleteToDo: function(position)
  {
    this.todos.splice(position, 1);
    this.displayToDo();
  },

  toggleCompleted: function(position)
  {
    var todo = this.todos[position];
    todo.completed = !todo.completed;
    this.displayToDo();
  },

  toggleAll: function()
  {
    var totalTodos = this.todos.length;
    var completedToDos = 0;


  for (var i=0; i<totalTodos; i++)
  {
    if (this.todos[i].completed === true)
    {
      completedToDos++;
    }
  }

  if (completedToDos === totalTodos)
      {
       for (var i=0; i<totalTodos; i++)
       {
       this.todos[i].completed = false;
       }
    }
    else
    {
       for (var i=0; i<totalTodos; i++)
       {
       this.todos[i].completed = true;
       }
    }
    this.displayToDo();
  }

};

1 个答案:

答案 0 :(得分:0)

与JavaScript中的Java getClass()或Ruby .class没有确切的对应关系。大多数情况下,由于JavaScript是基于原型的语言,而Java则是基于类的语言。

根据您需要的getClass(),JavaScript中有几个选项:

typeof
instanceof
obj.constructor
func.prototype, proto.isPrototypeOf

一些例子:

function Foo() {}
var foo = new Foo();

typeof Foo;             // == "function"
typeof foo;             // == "object"

foo instanceof Foo;     // == true
foo.constructor.name;   // == "Foo"
Foo.name                // == "Foo"    

Foo.prototype.isPrototypeOf(foo);   // == true

Foo.prototype.bar = function (x) {return x+x;};
foo.bar(21);            // == 42

到期时间:How to get a JavaScript object's class?