pemusnahan berangka es6 Number.prototype.toString bukan generik - pemusnahan berangka es6 Number.prototype.toString bukan generik
扔个三星炸死你
扔个三星炸死你 2017-06-28 09:29:13
0
3
898
<!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>

Mengapa b tidak boleh dipanggil sebagai fungsi?

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

membalas semua(3)
滿天的星座

Number.prototype.toString standard

Fungsi toString bukan generik; ia mengeluarkan pengecualian TypeError jika nilai ini bukan objek Nombor atau Nombor Oleh itu, ia tidak boleh dipindahkan ke objek lain untuk digunakan sebagai kaedah.

Terjemah yang berikut:

Jika dia this值不是数字类型或者Number对象,将会抛出一TypeError

Hubungi terusthiswindow
Anda boleh menggunakan ini:

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

Anda bolehb.call(num),一般来说toString不允许作为普通函数执行很容易接受,就跟构造函数一般不作为普通函数执行一样。
ps:例子中的Number.prototype.toString()实际上作用域也是Number.prototype


Untuk menambah, jawapannya agak keluar dari topik b() sebenarnya dipanggil sebagai fungsi, dan panggilan itu berjaya dilemparkan oleh toString() itu sendiri.

迷茫

Number.prototype.toString Boleh dipanggil sebagai fungsi tetapi ini mestilah jenis Nombor. Perkara yang sama berlaku untuk jenis toString yang lain.

b.call(123)
// "123"

Fungsi toString bukan generik; ia mengeluarkan pengecualian TypeError jika nilai ini bukan objek Nombor atau Nombor Oleh itu, ia tidak boleh dipindahkan ke objek lain untuk digunakan sebagai kaedah.

15.7.4.2 Number.prototype.toString

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan