繁体   English   中英

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

[英]How can I access a JS object I have defined?

我有以下对象:

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错误。

问题是你试图在一个对象上使用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);
};
function IOBreadcrumb() {
    var breadcrumbs = [];

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

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

使用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');
function createIOBreadcrumb() {
    return {
        breadcrumbs: [],

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


var breadcrumb = createIOBreadcrumb();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM