如何访问我定义的JS对象?

时间:2011-10-05 23:24:57

标签: javascript oop

我有以下对象:

var IOBreadcrumb = {
    breadcrumbs: [],

    add: function(title, url){
      var crumb = {
        title: title, 
        url:url
      };
      this.breadcrumbs.push(crumb);
    }
  };

如何访问该对象?

var breadcrumb = new IOBreadcrumb();
breadcrumb.add('some title','some url');
console.log(breadcrumb.breadcrumbs);

给我Uncaught Type Error: object is not a function错误。

4 个答案:

答案 0 :(得分:3)

问题是你试图在一个对象上使用new但它实际上只能定位函数。请尝试以下

var IOBreadcrumb = function IOBreadcrumb() {
  this.breadcrumbs = [];
  this.add = function(title, url) {
    var crumb = {
      title: title, 
      url:url
    };
    this.breadcrumbs.push(crumb);
  };
};

或者你也可以在这里利用原型并在几个实例中分享add的定义

var IOBreadcrumb = function IOBreadcrumb() {
  this.breadcrumbs = [];
};

IOBreadcrumb.prototype.add = function (title, url) {
  var crumb = {
    title: title, 
    url:url
  };
  this.breadcrumbs.push(crumb);
};

答案 1 :(得分:0)

function IOBreadcrumb() {
    var breadcrumbs = [];

    this.add = function(title, url){
      var crumb = {
        title: title, 
        url:url
      };
      breadcrumbs.push(crumb);
    }
  };

应该这样做,从字面上看,它不是一个功能;)

答案 2 :(得分:0)

使用IOBreadcrumb.add('some title','some url');

目前IOBreadcrumb是一个具有静态函数add的对象。如果你想创建IOBreadcrumb的实例,你可以使它成为一个函数。

var IOBreadcrumb = function() {
  this.breadcrumbs = [];
  this.add = function(title, url) {
    this.breadcrumbs.push({
      title: title,
      url: url
    });
  };
};

var breadcrumb = new IOBreadcrumb();
breadcrumb.add('some title','some url');

答案 3 :(得分:0)

function createIOBreadcrumb() {
    return {
        breadcrumbs: [],

        add: function(title, url) {
            var crumb = {
                title: title, 
                url:url
            };
            this.breadcrumbs.push(crumb);
        };
    };
}


var breadcrumb = createIOBreadcrumb();