Javascript MDN String.prototype.repeat polyfill-如何';这';有空值吗?
在中,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(
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”不再是原始对象。