Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang Javascript Objects_Basic pengetahuan

Penjelasan terperinci tentang Javascript Objects_Basic pengetahuan

WBOY
WBOYasal
2016-05-16 16:37:301315semak imbas

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
 
Anda boleh menggunakan dalam atau hasOwnProperty untuk menentukan sama ada terdapat sifat dalam objek.

Sifat objek

•Melintasi sifat objek


Anda boleh gunakan for..in untuk mengulangi sifat objek

Apabila menggunakan for..in, sifat pada rantai prototaip akan dilalui. Susunan lintasan ialah lintasan lebar-pertama

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

Boleh ditulis (boleh ditulis) menunjukkan sama ada sifat objek boleh ditulis

Contohnya


var o = {
  foo : 'bar'
}
Object.defineProperty(o, "foo", { writable : false });
o.foo = 'world';
console.log(o.foo);//仍然输出bar
Enumerable menunjukkan sama ada sifat objek boleh dikira

Contohnya

Atribut yang boleh dikira seperti panjang dalam Array adalah palsu, jadi,

for (p in Array) {
  console.log(p);
}
Tiada keluaran

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 });

Dapatkan mewakili kaedah mendapatkan sifat objek

Set mewakili kaedah untuk menetapkan sifat objek

Contoh


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.stringify

valueOf digunakan apabila objek perlu ditukar kepada jenis lain. Sekali lagi, tidak banyak yang boleh dikatakan tentang penukaran lalai.



Objek boleh laksana

Objek boleh laku boleh dibuat melalui kaedah berikut


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
boleh digunakan sebagai objek (dengan rantai prototaip), atau sebagai fungsi untuk dipanggil terus

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn