Pergi terus ke topik
Menghuraikan objek rentetan
Kita semua tahu bahawa objek JavaScript boleh disirikan ke dalam JSON, dan JSON juga boleh dihuraikan menjadi objek Tetapi masalahnya ialah jika terdapat "benda" yang bukan JSON mahupun objek, ia menyusahkan untuk ditukar kepada. sama ada satu, kemudian eval Ia boleh berguna
var obj = "{a:1,b:2}"; // 看起来像对象的字符串 eval("("+ obj +")") // {a: 1, b: 2}
Oleh kerana eval boleh melaksanakan ungkapan rentetan, dan kami ingin melaksanakan objek rentetan obj menjadi objek sebenar, maka kami perlu menggunakan eval. Tetapi untuk mengelakkan eval daripada melaksanakan obj dengan {} sebagai pernyataan, kami meletakkan sepasang () di luar obj untuk membiarkannya dihuraikan menjadi ungkapan.
& (bitwise DAN)
Untuk menentukan sama ada sesuatu nombor ialah kuasa ke-2, anda boleh DAN dengan sendirinya tolak satu
var number = 4 (number & number -1) === 0 // true
^ (bitwise XOR)
Dengan pembolehubah ketiga yang berbeza, anda boleh menukar nilai kedua-dua pembolehubah
var a = 4,b = 3 a = a ^ b // 7 b = a ^ b // 4 a = b ^ a // 3
Format Tarikh
Ingin mendapatkan masa selepas format? Kini anda tidak perlu lagi mendapatkan tahun, bulan, hari, jam, minit dan saat, anda boleh melakukannya dalam tiga langkah
var temp = new Date(); var regex = /\//g; (temp.toLocaleDateString() + ' ' + temp.toLocaleTimeString().slice(2)).replace(regex,'-'); // "2015-5-7 9:04:10"
Ingin menukar masa yang diformatkan kepada objek masa? Gunakan terus pembina Tarikh
new Date("2015-5-7 9:04:10"); // Thu May 07 2015 09:04:10 GMT+0800 (CST)
Ingin menukar objek masa standard kepada cap waktu unix? valueOf menyelesaikannya
(new Date).valueOf(); // 1431004132641
Ramai rakan juga mengingatkan saya bahawa ini boleh mendapatkan cap masa dengan cepat
Tarikh baharu
Satu dolar tambah
Tambah satu dolar boleh menukar nombor rentetan kepada nombor matematik dengan cepat, iaitu
var number = "23" typeof number // string typeof +number // number
Anda boleh menukar objek masa kepada cap masa
new Date // Tue May 12 2015 22:21:33 GMT+0800 (CST) +new Date // 1431440459887
URI yang melarikan diri
Anda perlu menghantar url sebagai parameter dalam laluan, sekarang elakkannya
var url = encodeURIComponent('http://segmentfault.com/questions/newest') // "http%3A%2F%2Fsegmentfault.com%2Fquestions%2Fnewest"
Larian terbalik
decodeURIComponent(url) // "http://segmentfault.com/questions/newest"
Nombor
Jika anda ingin mengekalkan beberapa tempat perpuluhan selepas titik perpuluhan tanpa perlu melakukan pemintasan rentetan, gunakan toFixed untuk membawanya pergi
number.toFixed() // "12346" number.toFixed(3) // "12345.679" number.toFixed(6) // "12345.678900"
Julat parameter ialah 0~20, jika tidak ditulis, lalainya ialah 0
Pengesanan jenis
Typeof ialah kaedah pengesanan jenis yang paling kerap digunakan
typeof 3 // "number" typeof "333" // "string" typeof false // "boolean"
Ia bagus untuk jenis data asas (mudah), tetapi apabila merujuk kepada jenis data rujukan, ia tidak begitu mudah
typeof new Date() // "object" typeof [] // "object" typeof {} // "object" typeof null // "object"
Tiga yang pertama boleh ditanggung, tetapi null sebenarnya mengembalikan objek. Adakah anda bergurau! ! ! (ps: Sebenarnya ini adalah pepijat JavaScript yang tidak dapat diperbaiki oleh orang ramai ꒰・◡・๑꒱ )
Pada masa ini, kami akan menggunakan instanceof
toString instanceof Function // true (new Date) instanceof Date // true [] instanceof Object // true [] instanceof Array // true
Malah, kami dapati bahawa [] dan Object menjadi benar Walaupun kami tahu bahawa [] juga merupakan objek, kami berharap kaedah yang lebih tepat untuk menentukan jenis, dan kini ia ada di sini
Gunakan Object.prototype.toString() untuk menilai Agar setiap objek melepasi pengesanan, kita perlu menggunakan Function.prototype.call atau Function.prototype.apply untuk memanggil
var toString = Object.prototype.toString; toString.call(new Date) // "[object Date]" toString.call(new Array) // "[object Array]" toString.call(new Object) // "[object Object]" toString.call(new Number) // "[object Number]" toString.call(new String) // "[object String]" toString.call(new Boolean) // "[object Boolean]"
Perlu diambil perhatian bahawa kaedah toString berkemungkinan besar akan ditindih, jadi apabila anda perlu menggunakannya,
Anda boleh menggunakan kaedah Object.prototype.toString() terus
Melaksanakan pewarisan
Lihat contoh rasmi
//Shape - superclass function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info("Shape moved."); }; // Rectangle - subclass function Rectangle() { Shape.call(this); //call super constructor. } Rectangle.prototype = Object.create(Shape.prototype); var rect = new Rectangle(); rect instanceof Rectangle //true. rect instanceof Shape //true. rect.move(1, 1); //Outputs, "Shape moved."
Dapatkan sifat dan kaedah yang dimulakan melalui panggilan, dan dapatkan sifat dan kaedah pada objek prototaip melalui Object.create
Lelaran
ES5 mempunyai banyak fungsi lelaran, seperti peta, penapis, beberapa, setiap, kurangkan, dll.
Susunatur
API khusus diperkenalkan secara terperinci di sini.
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Glob...
Berikut adalah beberapa perkataan:
Sertai, pop, tolak, undur, anjak, isih, sambung, nyahshift akan menukar tatasusunan asal
concat,indexOf,lastIndexOf,slice,toString tidak akan mengubah tatasusunan asal
Kaedah lelaran seperti peta, penapis, beberapa, setiap, kurangkan dan untukSetiap tidak akan mengubah tatasusunan asal
Beberapa perkara yang perlu diberi perhatian:
1 syif, pop akan mengembalikan elemen yang dipadamkan
2 splice akan mengembalikan tatasusunan yang terdiri daripada elemen yang dipadamkan atau tatasusunan kosong
3 push akan mengembalikan panjang tatasusunan baharu
4 beberapa berhenti apabila benar
5 setiap Henti apabila terdapat palsu
6 Kaedah lelaran di atas boleh menambahkan parameter thisArg pada penghujungnya, iaitu nilai ini apabila melaksanakan panggilan balik.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.