Servus Ninjas,
这是ecmascript 5规范。 ({1}}部分中的(第118页)说:注意:thisArg值未经修改即作为此值传递。这是对版本3的更改,其中未定义或null thisArg替换为全局对象, ToObject 应用于所有其他值,并将结果作为此值传递。
这听起来很有希望,但是这个规范还没有在任何现代浏览器中实现,所以我们必须处理第3个规范的实现。
我现在的问题是“如何让Function.prototype.apply(thisArg, argArray)
语句变为TRUE?”
typeof
任何想法?
答案 0 :(得分:3)
JavaScript中有两种类型的字符串。
typeof string
"hello"
和typeof对象
new String("hello");
apply
将始终包装您作为对象传递的任何值,因为您需要通过this
关键字使用它。
答案 1 :(得分:0)
使用this instanceof String
(仅限同一窗口)或使用Object.prototype.toString.call(this) === "[object String]"
(适用于Windows)。
答案 2 :(得分:0)
目前唯一的事情是检查类型
使用Object.prototype.toString.call(string) == "[object String]";
并将this
转换回字符串,如:
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的悲伤章节:(