如何访问我定义的JS对象

How can I access a JS object I have defined?

本文关键字:定义 JS 对象 何访问 访问      更新时间:2023-09-26

我有以下对象:

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);
};

使用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();
function IOBreadcrumb() {
    var breadcrumbs = [];
    this.add = function(title, url){
      var crumb = {
        title: title, 
        url:url
      };
      breadcrumbs.push(crumb);
    }
  };

应该这样做,确切地说,这不是一个函数;(