我想知道我们是否可以定义一个Object,就像它是位置对象一样......例如:
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() ...
此行为适用于location
此时我可以模仿的唯一方法是通过toStrin
进行操作a.toString = ()-> return a.a
console.log( ''+a )
//> 'asd'
那么,在我们的代码中存在一种干净的方法来实现这一点,或者这种行为只适用于系统变量吗?
答案 0 :(得分:0)
您可以覆盖toString(),这样无论何时在字符串的上下文中使用该对象,都会获得a.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
答案 1 :(得分:0)
我找到的解决方案是使用String对象:
var a = new String('asd');
a.b = someUsefullFunction
但是@ jason-fetterly说输出很大程度上取决于你测试的浏览器,因此在稳定性问题上这在javaScript中是不可行的。
另外如果你想要这个,我在开头说,其他点使用toString overide
a.toString = function(){return a.a};
console.log( ''+a )
我后面学到的这个问题的理论部分是(对象/函数)重载,可以在Java中使用。