以两种不同的方式使用函数

时间:2012-07-27 21:55:18

标签: javascript function

我正在创建一个附加到其他功能的函数。

像:

string("Hi").capitilize()//returns hi

我希望能够以两种不同的方式使用$$。字符串。 1将其附加到功能上。第二个是单独的功能:

string("Hi")

那假设只是回归嗨。但我得到的只有:[object Object]

允许我做第一个,附加到函数的主代码是:

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
var string = function (a) {
            return new g(a);
}

然后我有另一个带有所有函数的变量,然后用原型绑定它。

如果我只有字符串(“Hi”)并且仍然允许这些函数添加它们,是否可以使它只返回字符串?

1 个答案:

答案 0 :(得分:1)

基本问题是函数无法判断返回值的位置。在评估.运算符时,您的函数调用已结束,因此您的代码在此时无法执行任何操作。

现在,您可以做的是返回一个在其原型上有toString()实现的对象,这样当您的对象在被视为字符串的情况下使用时,它将适当地转换

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
g.prototype.toString = function() {
  return this._string;
}
var string = function (a) {
            return new g(a);
}
alert( new string("Hi") );