JavaScript对象定义返回一个字符串,而不是整个对象
我想知道我们是否可以定义一个像定位对象一样的对象。。。例如:JavaScript对象定义返回一个字符串,而不是整个对象,javascript,javascript-objects,Javascript,Javascript Objects,我想知道我们是否可以定义一个像定位对象一样的对象。。。例如: var a = {a:'asd', b:someFunction}; console.log( a ); //Desired: 'asd' //Actual: Object {a,b}... console.log( a.a ); //> 'asd' console.log( a.b ); //> function() ... 这种行为与 在这一点上,我唯一可以模仿这一点的方法是通过toStrin进行scaping a
var a = {a:'asd', b:someFunction};
console.log( a );
//Desired: 'asd'
//Actual: Object {a,b}...
console.log( a.a );
//> 'asd'
console.log( a.b );
//> function() ...
这种行为与
在这一点上,我唯一可以模仿这一点的方法是通过toStrin进行scaping
a.toString = ()-> return a.a
console.log( ''+a )
//> 'asd'
因此,在我们的代码中存在一种干净的方法来实现这一点,或者这种行为仅适用于系统变量?您可以重写toString(),以便无论何时在字符串上下文中使用对象,都可以得到一个.a值。但是,这不会改变console.log(a)。如果这没有帮助,也许你应该编辑你的任务并提供更多关于你的用例的信息
var a = {
a: 'asd',
b: function someFunction() {}
};
a.toString = function() {
return this.a;
};
alert(a);
// Dialog with 'asd'
console.log('Value of a: '+a);
// Console prints 'Value of a: asd'
console.log(a);
// Exact print depends on browser, but full object details will likely be shown
我找到的解决方案是使用字符串对象:
var a = new String('asd');
a.b = someUsefullFunction
但是has@jasonfetterly说,输出在很大程度上取决于所测试的浏览器,因此出于稳定性考虑,这在javaScript中是不可行的
此外,如果你想这样做,我在开始时说,其他点使用toString overide
a.toString = function(){return a.a};
console.log( ''+a )
我最近学到的这个问题的理论部分是(对象/函数)重载,在Java中是可行的//返回>“asd”?你确定吗?那没什么意义。如果我读对了,他想让它打印
'asd'
,而不是Object{…}
。我已进行了编辑,如果您不同意@DanielFox,请将其还原。console.log(window.location)
显示位置对象(至少在Chrome中),而不是您所描述的。实际用例是什么?如果您希望它用于调试目的,请编写自己的调试函数来调用toString方法。正如Alex所说,控制台没有标准化,因此输出根据浏览器甚至浏览器版本而有所不同。