我有以下对象:
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
错误。
答案 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();