Penjelasan terperinci tentang Javascript Objects_Basic pengetahuan

WBOY
Lepaskan: 2016-05-16 16:37:30
asal
1309 orang telah melayarinya

Buat objek

•Kuantiti langsung objek

var o = {
 foo : "bar"
 }
 
Salin selepas log masuk

•Pembina

var o = new Object();
 
Salin selepas log masuk

•Warisan prototaip

var p = Object.create(o);
 
Salin selepas log masuk

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
 
Salin selepas log masuk
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
Salin selepas log masuk
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);
}
Salin selepas log masuk
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的值
Salin selepas log masuk

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan