Javascript MDN String.prototype.repeat polyfill-如何';这';有空值吗?

Javascript MDN String.prototype.repeat polyfill-如何';这';有空值吗?,javascript,polyfills,Javascript,Polyfills,在中,polyfill具有以下代码行: if (!String.prototype.repeat) { String.prototype.repeat = function(count) { 'use strict'; if (this == null) throw new TypeError('can\'t convert ' + this + ' to object'); 这怎么可能是空的?像这样: String.prototype.repeat.call(

在中,polyfill具有以下代码行:

if (!String.prototype.repeat) {
  String.prototype.repeat = function(count) {
    'use strict';
    if (this == null)
      throw new TypeError('can\'t convert ' + this + ' to object');
这怎么可能是空的?

像这样:

String.prototype.repeat.call()
像这样:

String.prototype.repeat.call()
您可以在其他上下文中使用或执行函数。大多数JavaScript函数被设计为通用的,也就是说,它可以处理大多数变量类型

String.prototype.repeat.call(1, 2); // -> "11"
String.prototype.repeat.call({}, 2); // -> "[object Object][object Object]"
因此,需要进行一个简单的检查,以确保没有人尝试在
null
未定义的上下文中执行它

String.prototype.repeat.call(null, 2); // TypeError
您可以在另一个上下文中使用或执行函数。大多数JavaScript函数被设计为通用的,也就是说,它可以处理大多数变量类型

String.prototype.repeat.call(1, 2); // -> "11"
String.prototype.repeat.call({}, 2); // -> "[object Object][object Object]"
因此,需要进行一个简单的检查,以确保没有人尝试在
null
未定义的上下文中执行它

String.prototype.repeat.call(null, 2); // TypeError

请注意,当使用
==
而不是
==
进行检查时,
未定义==null
也是
真的
,而不是
===
与其他OO语言不同,在Javascript中,调用代码时的上下文会影响“this”的值。在Andrey的回答中,该方法已作为函数捕获到变量中。调用该函数不再在原始对象的上下文中,因此“this”不再是原始对象。与其他OO语言不同,在Javascript中,调用代码时的上下文会影响“this”的值。在Andrey的回答中,该方法已作为函数捕获到变量中。调用该函数不再在原始对象的上下文中,因此“this”不再是原始对象。