La déstructuration numérique es6 Number.prototype.toString n'est pas générique - La déstructuration numérique es6 Number.prototype.toString n'est pas générique
扔个三星炸死你
扔个三星炸死你 2017-06-28 09:29:13
0
3
897
<!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 ?

扔个三星炸死你
扔个三星炸死你

répondre à tous(3)
滿天的星座

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 directementthiswindow
Vous pouvez utiliser ceci :

b.call(1)
b.call(Number('test'))
过去多啦不再A梦

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.

迷茫

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal