对象在直接访问时是否有可能有一个值,而且嵌套对象在里面?

时间:2014-01-31 21:02:22

标签: 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'

对象类型有两个版本,一个是直接访问它,另一个是当你访问其中一个子道具时

由于

2 个答案:

答案 0 :(得分:3)

是的,您可以覆盖toString()方法:

obj.toString = function() {
    return "Something";
}

答案 1 :(得分:0)

如果您需要在浏览器中使用它,则必须挂钩控制台,并覆盖对象的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);