Buat objek
•Kuantiti langsung objek
var o = { foo : "bar" }
•Pembina
var o = new Object();
•Warisan prototaip
var p = Object.create(o);
Warisan kelas
Objek JavaScript mempunyai sifat sendiri dan sifat warisan.
•Apabila menanyakan atribut x objek o, mula-mula cari atribut x dalam o Jika tidak dijumpai, kemudian cari atribut x dalam objek prototaip o sehingga x atau objek yang prototaipnya nol ditemui
•Apabila memberikan nilai kepada atribut x objek o, jika o sudah mempunyai atribut x sendiri, tukar nilai x Jika atribut x tidak wujud dalam o, cipta atribut x untuk o dan tetapkan nilai•Dengan kata lain, rantai prototaip hanya akan berfungsi apabila membuat pertanyaan.
var O = { x : 1 }; function P() { this.y = 2; } P.prototype = O; var t = new P(); console.log(t); console.log('x' in t);//true console.log(t.hasOwnProperty('x'));//false
Sifat objek
•Melintasi sifat objek
Anda boleh gunakan for..in untuk mengulangi sifat objek
Jadi menggunakan hasOwnProperty anda boleh menentukan sama ada ia adalah hak milik objek itu sendiri.
•Ciri-ciri atribut objek
Gunakan Object.getOwnPropertyDescriptor() untuk mendapatkan deskriptor bagi sifat tertentu objek
Contohnya
var o = { foo : 'bar' } Object.defineProperty(o, "foo", { writable : false }); o.foo = 'world'; console.log(o.foo);//仍然输出bar
Contohnya
Atribut yang boleh dikira seperti panjang dalam Array adalah palsu, jadi,
for (p in Array) { console.log(p); }
Kebolehkonfigurasian (boleh dikonfigurasikan) menunjukkan kebolehkonfigurasian dan kebolehbilangan sifat yang boleh diubah suai
Sifat konfigurasi ini boleh ditakrifkan menggunakan Object.defineProperties.
Object.defineProperty(o, "foo", { boleh ditulis : palsu });
Set mewakili kaedah untuk menetapkan sifat objek
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { console.log('get year'); return this._year; }, set: function (newValue) { console.log('set year'); if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005;//控制台输出‘set year' console.log(book.year);//控制台输出‘get year'和year的值
Kaedah objek
toString menukar objek kepada rentetan Penukaran lalai akan menjadi seperti [objek Objek], jadi jika anda perlu menukarnya kepada format json, anda boleh menggunakan JSON.stringifyvalueOf digunakan apabila objek perlu ditukar kepada jenis lain. Sekali lagi, tidak banyak yang boleh dikatakan tentang penukaran lalai.
Objek boleh laksana
function bar(o) { var f = function() { return "Hello World!"; } o.__proto__ = f.__proto__; f.__proto__ = o; return f; } var o = { x: 5 }; var foo = bar(o); console.log(foo()); console.log(foo.x); console.log(typeof foo);//function