Rumah > Soal Jawab > teks badan
<!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?
滿天的星座2017-06-28 09:31:13
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 terusthis
是window
Anda boleh menggunakan ini:
b.call(1)
b.call(Number('test'))
过去多啦不再A梦2017-06-28 09:31:13
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.
迷茫2017-06-28 09:31:13
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