parameter:
(1) OBJ
Diperlukan. Nama variabel tempat objek objek ditetapkan.
(2) Nilai
Opsional. Tipe data primitif JavaScript apa pun (angka, boolean, atau string). Jika nilainya adalah objek, objek yang dikembalikan tidak dimodifikasi. Jika nilainya nol, "tidak terdefinisi", atau "tidak disediakan", objek tanpa konten dibuat.
Metode objek objek
Ketika objek digunakan sebagai konstruktor, ia dapat menerima parameter. Jika parameter adalah objek, itu akan secara langsung mengembalikan objek; Jika itu adalah nilai dari tipe asli, ia akan mengembalikan objek pembungkus yang sesuai dengan nilai. Menggunakan ini, Anda dapat menulis fungsi yang menentukan apakah suatu variabel adalah objek.
function isObject (value) {return value === objek (value);}Ada dua cara untuk menggunakan metode pada objek objek.
Menyebarkan objek objek itu sendiri
Menyebarkan objek Object.prototype
Metode Object.Keys sangat mirip dengan Object.getOwnPropertynames metode dan umumnya digunakan untuk melintasi sifat -sifat suatu objek. Parameter mereka semuanya adalah objek, dan mereka semua mengembalikan array, dan anggota array semuanya adalah nama atribut objek itu sendiri (bukan diwarisi). Perbedaan antara keduanya adalah bahwa yang pertama hanya pengembalian atribut yang dapat dihindarkan, sedangkan yang terakhir juga mengembalikan nama atribut yang tidak dapat dihindari. Karena array memiliki panjang atribut yang tidak dapat dihindari, array umumnya dilalui dengan objek.keys.
JavaScript tidak menyediakan metode untuk menghitung jumlah properti objek, yang dapat diperoleh melalui objek.keys (o) .length dan objek.getOwnPropertynames (o) .length.
Metode objek.observe digunakan untuk mengamati perubahan dalam sifat objek.
Metode terkait rantai prototipe:
Object.create (): Hasilkan objek baru dan prototipe objek.
Object.getPrototypeOf (): Mendapat objek prototipe objek.
Metode objek objek objek objek
Object.prototype.ValueOf (): Fungsi metode nilai adalah untuk mengembalikan nilai objek, dan secara default, objek itu sendiri dikembalikan. Tujuan utama dari metode ini adalah bahwa metode ini akan dipanggil secara default ketika JavaScript secara otomatis mengonversi tipe.
Object.prototype.toString (): Fungsi metode ToString adalah mengembalikan bentuk string suatu objek. Ketika suatu objek digunakan untuk penambahan string, metode ToString dipanggil secara otomatis.
Menggunakan metode panggilan, Anda dapat memanggil metode objek.prototype.toString pada nilai apa pun untuk menentukan jenis nilai ini. Nilai pengembalian metode ToString dari berbagai tipe data adalah sebagai berikut:
Nilai: return [nomor objek]
String: Return [Object String]
Boolean: Returns [Object Boolean]
tidak ditentukan: kembalikan [objek tidak ditentukan]
NULL: return [objek null]
Objek: Mengembalikan "[objek" + Nama konstruktor + "]"
Object.prototype.toString.call (2) // "[Nomor Objek]" Object.Prototype.ToString.call ('') // "[String Object]"Menggunakan fitur ini, Anda dapat menulis fungsi penilaian tipe yang lebih akurat daripada operator tipe.
var type = function (o) {var s = object.prototype.toString.call (o); return S.Match (// [objek (.*?)/]/) [1] .tolowercase ();}; type ({}); // tipe "objek" ([]); // tipe "array" (5); // "nomor"Berdasarkan fungsi tipe di atas, Anda juga dapat menambahkan metode yang secara khusus menentukan jenis data tertentu.
['Null', 'tidak terdefinisi', 'objek', 'array', 'string', 'angka', 'boolean', 'fungsi', 'regexp', 'elemen', 'nan', 'tak terbatas']. Foreach (function (t) {type ['is' + t] = function (o) {return type (o) === T. };}); type.isObject ({}); // truetype.isnumber (nan); // falsetype.iselement (document.createelement ('div')); // BENARModel atribut objek
Dalam JavaScript, setiap atribut memiliki objek atribut yang sesuai, yang menyimpan beberapa informasi meta dari atribut. Gunakan Object.getOwnPropertyDescriptor Method untuk membaca objek atribut atribut P objek O. Objek Atribut berisi informasi meta berikut:
Nilai: mewakili nilai properti ini, yang tidak ditentukan secara default (selama salah satu yang dapat ditulis dan dapat dikonfigurasi benar, dapat diubah).
Tulisan: Menunjukkan apakah nilai properti ini dapat diubah, default benar.
Enumerable: Menunjukkan apakah atributnya dapat dihindarkan, default benar, yaitu atribut akan muncul dalam operasi seperti untuk ... di dan objek.keys (). Secara umum, properti asli sistem (mis. Properti non-pengguna yang ditentukan) tidak dapat dihitung.
Menunjukkan "konfigurasi", default ke true. Jika diatur ke false, itu berarti bahwa atribut tidak dapat dihapus, dan objek atribut tidak boleh diubah (kecuali atribut nilai, jika writable benar, nilainya masih dapat diubah), yaitu, atribut yang dapat dikonfigurasi mengontrol writability objek atribut.
Fungsi nilai (Getter) yang mewakili properti ini, default untuk tidak ditentukan.
Fungsi penyimpanan nilai (setter) yang mewakili properti ini, default untuk tidak ditentukan.
var o = {p: 'a'}; object.getOwnPropertyDescriptor (o, 'p'); // objek {// value: "a", // writable: true, // enumerable: true, // dikonfigurasi: true //}Metode Object.Defineproperty memungkinkan Anda untuk mendefinisikan atau memodifikasi atribut dengan mendefinisikan objek atribut, dan kemudian mengembalikan objek yang dimodifikasi. Formatnya adalah sebagai berikut:
Object.defineproperty (Object, PropertyName, AtributSObject)
Metode Object.Defineproperty menerima tiga parameter, yang pertama adalah objek di mana properti berada, yang kedua adalah nama properti (harus berupa string), dan yang ketiga adalah objek deskripsi properti. Melalui metode ini, nilai default dari properti yang dapat ditulis, dapat dikonfigurasi, dan enumerable dari objek properti salah.
Object.defineproperty (o, "p", {value: "bar"}); objek.getOwnPropertyDescriptor (o, 'p'); // objek {// value: "bar", // writable: false, // enumerable: false, // dikonfigurasi: false //}Jika beberapa properti didefinisikan atau dimodifikasi sekaligus, Anda dapat menggunakan metode Object.DefineproPerties. Perlu dicatat bahwa setelah fungsi nilai mendapatkan (atau set fungsi penyimpanan nilai) didefinisikan, writable tidak dapat diatur ke true, atau atribut nilai didefinisikan pada saat yang sama, jika tidak kesalahan akan dilaporkan.
var o = Object.defineProperties({}, { p1: {value: 123, enumerable: true}, p2: { value: "abc", enumerable: true}, p3: { get: function () { return this.p1 + this.p2 }, enumerable: true, configurable: true }});Hancur dapat digunakan untuk mengatur properti "rahasia". Jika penghancuran properti salah, loop for..in, metode objek.keys, dan metode json.stringify tidak akan mendapatkan properti, tetapi nilainya dapat diperoleh langsung melalui O.xx.
Perbedaan antara FOR ... di loop dan objek.Keys Metode adalah bahwa yang pertama menyertakan sifat -sifat objek yang diwarisi dari objek prototipe, sedangkan yang terakhir hanya mencakup sifat -sifat objek itu sendiri. Jika Anda perlu mendapatkan semua properti dari objek itu sendiri, terlepas dari nilai yang dapat diakhiri, Anda dapat menggunakan metode Object.getOwnPropertynames.
Konfigurasi menentukan apakah suatu variabel dapat dihapus. Ketika suatu variabel dinyatakan menggunakan perintah var, variabel yang dapat dikonfigurasi adalah salah, dan ketika suatu variabel dinyatakan menggunakan perintah var (atau variabel dinyatakan menggunakan penugasan atribut), konfigurasi variabel adalah benar. Ini berarti bahwa Delete hanya dapat menghapus sifat objek.
var a1 = 1; // dapat dikonfigurasi: falsaSea2 = 1; // dapat dikonfigurasi: true (setara dengan this.a2 = 1)
Selain definisi langsung, properti juga dapat didefinisikan menggunakan fungsi aksesor. Di antara mereka, fungsi penyimpanan nilai disebut setter, yang menggunakan perintah set; Fungsi akuisisi nilai disebut Getter, yang menggunakan perintah GET. Menggunakan fungsi akses, ikatan dua arah antara objek data dan objek DOM dapat direalisasikan.
Object.defineproperty (user, 'name', {get: function () {return document.getElementById ("foo"). Value}, atur: function (newValue) {document.geteLementById ("foo"). Value = newValue;}, dikonfigurasi: true});Status Objek Kontrol
JavaScript menyediakan tiga metode untuk secara akurat mengontrol keadaan baca dan tulis suatu objek dan mencegah objek diubah. Lapisan perlindungan terlemah adalah pencegahan, diikuti oleh segel, pembekuan terkuat.
Metode Object.PreventExtensions dapat membuat objek tidak dapat menambahkan properti baru, tetapi dapat menggunakan perintah DELETE untuk menghapus properti yang ada. Metode Object.isextensible dapat digunakan untuk memeriksa apakah suatu objek dapat ditambahkan.
Metode Object.seal membuat suatu tidak mungkin objek menambahkan properti baru atau menghapus properti lama. Object.seal juga menetapkan atribut yang dapat dikonfigurasi dari objek atribut dari atribut yang ada menjadi false, sehingga objek atribut tidak dapat lagi diubah. Metode Object.issealed digunakan untuk memeriksa apakah suatu objek menggunakan Object.seal Metode.
Metode objek.freeze dapat membuat objek tidak dapat menambahkan atribut baru, menghapus atribut lama, dan mengubah nilai atribut, membuat objek ini sebenarnya konstan. Metode Object.isfrozen digunakan untuk memeriksa apakah suatu objek menggunakan metode objek.freeze ().
Gunakan metode di atas untuk mengunci writability objek, tetapi Anda masih dapat menambahkan properti dengan mengubah objek prototipe objek.
var o = objek baru (); object.preventextensions (o); var proto = objek.getPrototypeof (o); proto.t = "hello"; ot // halo
Salah satu solusi adalah membekukan prototipe juga.
var o = object.seal (object.create (object.freeze ({x: 1}), {y: {value: 2, writable: true}})); tidak terdefinisiPS:
Objek objek termasuk dalam semua objek JavaScript lainnya; Semua metode dan propertinya tersedia untuk semua objek lainnya. Metode dapat didefinisikan ulang pada objek yang ditentukan pengguna dan dipanggil oleh JavaScript pada waktu yang tepat. Metode ToString adalah contoh dari metode objek yang sering didefinisikan ulang.
Dalam referensi bahasa ini, deskripsi setiap metode objek mencakup informasi implementasi default dan spesifik objek untuk objek JavaScript internal.
Dalam hal kompatibilitas IE, dokumen MSDN Microsoft adalah "objek objek telah diperkenalkan di Internet Explorer sebelum Internet Explorer 6", jadi jangan khawatir ~