Javascript 当一个对象被直接访问时,它是否可能有一个值,并且在其中嵌套对象?
我想知道在Javascript中,对象属性是否可能具有以下行为:Javascript 当一个对象被直接访问时,它是否可能有一个值,并且在其中嵌套对象?,javascript,Javascript,我想知道在Javascript中,对象属性是否可能具有以下行为: console.log(obj); // output 'Something' console.log(obj.prop_a); // output 'A' 而且 var a = obj; // a === 'Something' var b = obj.prop_a; /// b === 'A' 对象有两个版本,一个是直接访问它,另一个是访问它的子道具 谢谢是的,您可以重写toString()方法: obj.toString
console.log(obj); // output 'Something'
console.log(obj.prop_a); // output 'A'
而且
var a = obj; // a === 'Something'
var b = obj.prop_a; /// b === 'A'
对象有两个版本,一个是直接访问它,另一个是访问它的子道具
谢谢是的,您可以重写
toString()
方法:
obj.toString = function() {
return "Something";
}
如果需要在浏览器中工作,则必须钩住控制台,并重写对象的toString方法
You could hook the browser console, and redefine it afterwards:
var obj = {
prop_a: "A",
toString: function() {
return "Something";
}
};
var origConsole = console;
console = {
log: function(data) {
if (typeof data === "object") {
origConsole.log(data.toString());
} else {
origConsole.log(data);
}
}
}
console.log(obj);
那很好,我没想过。我不确定我是否总是想打印值;我不确定这在不同的浏览器和不同的行为下如何工作,但在alert中它会工作。然而,看看JSFIDLE演示,它是针对
node.js
的,所以它在后台运行ES5。实际上,我正在寻找一个更通用的解决方案,而不仅仅是打印obj
的值。例如,如果我做了var a=obj
,那么a将等于Something
,我仍然可以访问a.prop_a
。我想这是不可能的。@Michael,我想不可能。@Jon,这里有一些特定的用例,或者只是想知道?@Jon。我有一个对象,当直接访问它时,我不能更改它的值,但我想在传递时将更多信息粘贴到它,所以只需向它添加一个属性。问题出在哪里obj.prop_a=“a”
@Jon因为当只访问obj
时,它将返回{“prop_a”:“a”}
,我想返回一个不同的值您真的需要在对象上添加额外的信息吗?jQuery允许您使用.data
在对象上放置任意数量的信息,但它将其存储在单独的容器中。