如何在javascript中配置函数实例?
如果我有这个密码如何在javascript中配置函数实例?,javascript,json,Javascript,Json,如果我有这个密码 var node = function(n) { var name = n; var children = []; var finished = false; var failed = false; this.getName = function() { return name }; this.downloadData = function(obj) { }; this.getChi
var node = function(n) {
var name = n;
var children = [];
var finished = false;
var failed = false;
this.getName = function() {
return name
};
this.downloadData = function(obj) {
};
this.getChildren = function() {
return children;
};
this.setChildren = function(c) {
Array.prototype.push.apply(children, c);
};
this.isFinished = function() {
return finished;
};
this.setFinished = function() {
finished = true;
}
this.isFailed = function() {
return failed;
}
this.setFailed = function() {
failed = true;
}
};
如何将其转换为以下对象:
var a = new node("a");
var j = JSON.stringify(a);
结果
{"name":"a","children":[],"finished":false,"failed":false}
谢谢您需要对象属性而不是变量
因此,不要声明var name=n
,您将声明this.name=n代码>。这会让它看起来像
var node = function(n) {
this.name = n;
this.children = [];
this.finished = false;
this.failed = false;
///other functions here
}
这可以通过实现toJSON
函数来实现
如果正在字符串化的对象具有名为toJSON的属性,其值为
是一个函数,则toJSON()方法自定义JSON
字符串化行为:不是序列化对象,而是
调用toJSON()方法时返回的值将被序列化。
例如:
幸运的是,这是不可能的。我认为题目选得不好。听起来像是要将函数转换为字符串,似乎要将通过new…
创建的对象转换为JSON。仅供参考,对象来自何处并不重要。这会将变量的访问修饰符从私有/本地更改为公共。可能不是OP想要的,他/她为他们创建了get/set。啊,这是一个有趣的观点。在这种情况下,您的解决方案肯定是可行的。如果最终结果是一个平面JSON对象,我想知道为什么需要getter/setter。稍后解析JSON字符串时,您无法使用它们。但是您如何调用“children”?这取决于children是什么,您的问题只表明它是一个数组。children可以包含更多节点。
var node = function(n) {
var name = n;
var children = [];
var finished = false;
var failed = false;
this.toJson = function toJson() {
return {"name":name ... };
}
}