我试图在没有成功的情况下尝试像其他语言一样,该对象可以具有默认的返回值,但还有其方法。像:
var o = {
this: "MyReturn",
SampleString: "My String",
MyMethod1: function() {},
MyMethod2: function() {},
}
然后,我的输出应该是:
> o
< "MyReturn"
> o.SampleString
< "My String"
> o.MyMethod1()
< function() {}
有可能吗? (以不使用Prototype的方式,或者它与我的代码冲突)
答案 0 :(得分:2)
这是不可能的。 o
永远是一个对象。您最接近的方法是自定义toString
方法并将o
投射到字符串或将对象设为Function
并调用o
o()
。
这里有一些选项可以像JavaScript一样接近。
var o = function(){
return "MyReturn";
};
o.SampleString = "My String";
o.MyMethod1 = function() {};
o.MyMethod2 = function() {};
<强>输出强>
> o()
< "MyReturn"
> o.SampleString
< "My String"
> o.MyMethod1()
< function() {}
var o = {
toString: function(){return "MyReturn";},
SampleString: "My String",
MyMethod1: function() {},
MyMethod2: function() {},
}
<强>输出强>
> String(o)
< "MyReturn"
> o.SampleString
< "My String"
> o.MyMethod1()
< function() {}
在第二个选项中,String(o)
可以替换""+o
,o.toString()
或者导致类型转换为字符串的anthing。
答案 1 :(得分:1)
您正在寻找toString()
方法。
每个对象都有一个toString()方法,当要将对象表示为文本值或者以期望字符串的方式引用对象时,会自动调用该方法。默认情况下,toString()方法由来自Object的每个对象继承。如果在自定义对象中未覆盖此方法,则toString()将返回“[object type]”,其中type是对象类型。 来源:MDN Object.prototype.toString()
var o = {
SampleString: "My String",
MyMethod1: function() {},
MyMethod2: function() {}
};
o.toString = function () {
return "MyReturn";
};
alert(o);
// MyReturn;
alert(o.SampleString);
// My String;
alert(o.MyMethod1);
// function () {}
<强> JSFIDDLE 强>
答案 2 :(得分:0)
我认为最接近的是
var o = {name:"myName"};
o.toString = function(){return o.name}
console.log(o+"");