Maison > Questions et réponses > le corps du texte
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
({toString:b} = 123);
console.log(b === Number.prototype.toString); // true
console.log(Number.prototype.toString()); // 0
console.log(b()); // Number.prototype.toString is not generic
let num = 456;
console.log(num.b()); // num.b is not a function
</script>
</body>
</html>
Pourquoi b ne peut-il pas être appelé en tant que fonction ?
滿天的星座2017-06-28 09:31:13
Numéro.prototype.toString standard
La fonction toString n'est pas générique ; elle renvoie une exception TypeError si sa valeur n'est pas un objet Number ou Number. Par conséquent, elle ne peut pas être transférée vers d'autres types d'objets pour être utilisée comme méthode.
Traduisez ce qui suit :
Si son
this
值不是数字类型或者Number
对象,将会抛出一TypeError
Appelez directementthis
是window
Vous pouvez utiliser ceci :
b.call(1)
b.call(Number('test'))
过去多啦不再A梦2017-06-28 09:31:13
Vous pouvezb.call(num)
,一般来说toString
不允许作为普通函数执行很容易接受,就跟构造函数一般不作为普通函数执行一样。
ps:例子中的Number.prototype.toString()
实际上作用域也是Number.prototype
Pour ajouter, la réponse est un peu hors sujet. b() est en fait appelé en tant que fonction, et l'appel est réussi. L'erreur est renvoyée par toString() lui-même.
迷茫2017-06-28 09:31:13
Number.prototype.toString
Peut être appelée en tant que fonction mais celle-ci doit être de type Number. La même chose s'applique aux autres types de toString.
b.call(123)
// "123"
La fonction toString n'est pas générique ; elle renvoie une exception TypeError si sa valeur n'est pas un objet Number ou Number. Par conséquent, elle ne peut pas être transférée vers d'autres types d'objets pour être utilisée comme méthode.
15.7.4.2 Number.prototype.toString