Javascript 防止“的类型转换”;这";在使用apply调用函数期间

Javascript 防止“的类型转换”;这";在使用apply调用函数期间,javascript,Javascript,Servus忍者 这是ecmascript 5规范(第118页)在Function.prototype.apply(thisArg,argArray)一节中所说的: 注意:thisArg值作为this值在未经修改的情况下传递。这是对第3版的更改,其中未定义或空thisArg被替换为全局对象,ToObject应用于所有其他值,结果作为This值传递 这听起来很有希望,但是这个规范还没有在任何现代浏览器中实现,所以我们必须处理第三个规范的实现 我现在的问题是“如何使语句的类型变为真?” var fo

Servus忍者

这是ecmascript 5规范(第118页)在
Function.prototype.apply(thisArg,argArray)
一节中所说的:

注意:thisArg值作为this值在未经修改的情况下传递。这是对第3版的更改,其中未定义或空thisArg被替换为全局对象,ToObject应用于所有其他值,结果作为This值传递

这听起来很有希望,但是这个规范还没有在任何现代浏览器中实现,所以我们必须处理第三个规范的实现

我现在的问题是“如何使
语句的
类型变为真?”

var foo = function (arg1, arg2) {
      alert(typeof this == "string");
};

foo.apply("bar", ["arg1", "arg2"]);

有什么想法吗?

JavaScript中有两种类型的字符串

有字符串类型的

"hello"
还有对象类型的

new String("hello");

apply
将始终包装作为对象传递的任何值,因为您需要通过
this
关键字使用它。

JavaScript中有两种类型的字符串

有字符串类型的

"hello"
还有对象类型的

new String("hello");

apply
将始终包装您作为对象传递的任何值,因为您需要通过
this
关键字使用它。

使用
此字符串实例(仅限同一窗口)或使用
object.prototype.toString.call(此)===“[对象字符串]”
(跨窗口工作).

使用
此字符串实例(仅限同一窗口)或使用
Object.prototype.toString.call(此)==“[对象字符串]”
(跨窗口工作)。

目前唯一的一件事是检查类型

使用
Object.prototype.toString.call(string)=“[Object string]”;
并将
转换回字符串,如下所示:

    var isString = function(string) {
      return Object.prototype.toString.call(string) == "[object String]";
    };

    var isNumber = function(number) {
      return Object.prototype.toString.call(number) == "[object Number]";
    };

    var toRightType = function(mess) {
      if(isString(mess)) {
        mess = mess+"";
      }

      if(isNumber(mess)) {
        mess = mess+0;
      }

      return mess;
    };


    var foo = function () {
      var _this = toRightType(this);
    };

    foo.apply("bar");

这是javascript中令人悲伤的章节之一:(

目前唯一的事情是检查类型

使用
Object.prototype.toString.call(string)=“[Object string]”;
并将
转换回字符串,如下所示:

    var isString = function(string) {
      return Object.prototype.toString.call(string) == "[object String]";
    };

    var isNumber = function(number) {
      return Object.prototype.toString.call(number) == "[object Number]";
    };

    var toRightType = function(mess) {
      if(isString(mess)) {
        mess = mess+"";
      }

      if(isNumber(mess)) {
        mess = mess+0;
      }

      return mess;
    };


    var foo = function () {
      var _this = toRightType(this);
    };

    foo.apply("bar");
这是javascript中最悲伤的章节之一:(