0

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

喜欢:

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

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

string("Hi")

假设只是返回 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);
}

然后我有另一个变量,其中包含所有函数,然后将它与原型绑定。

如果我只有 string("Hi") 并且如果添加它们仍然允许函数工作,是否可以让它只返回字符串?

4

1 回答 1

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") );
于 2012-07-27T22:02:35.997 回答