[英]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.