ホームページ  >  記事  >  ウェブフロントエンド  >  Javascriptオブジェクトを詳しく解説_基礎知識

Javascriptオブジェクトを詳しく解説_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:37:301300ブラウズ

オブジェクトの作成

•オブジェクトの直接数量

var o = {
 foo : "bar"
 }
 

•コンストラクター

var o = new Object();
 

•プロトタイプの継承

var p = Object.create(o);
 

クラスの継承

JavaScript オブジェクトには独自のプロパティと継承されたプロパティがあります。

•オブジェクト o の属性 x をクエリする場合、まず o の属性 x を検索します。見つからない場合は、x またはプロトタイプが null のオブジェクトが見つかるまで、o のプロトタイプ オブジェクトの x 属性を検索します。 >

•オブジェクトoのx属性に値を代入する際、oが既に自身の属性xを持っている場合は、oに属性xが存在しない場合はxの値を変更し、oに対してx属性を作成して代入します。値

•つまり、プロトタイプチェーンはクエリを実行する場合にのみ機能します。

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
 
in または hasOwnProperty を使用して、オブジェクトにプロパティがあるかどうかを判断できます。

オブジェクトのプロパティ

•オブジェクトのプロパティをトラバースする


for..in を使用してオブジェクトのプロパティを反復処理できます

for..in を使用すると、プロトタイプ チェーン上のプロパティが走査されます。走査順序は幅優先走査です

したがって、hasOwnProperty を使用すると、それがオブジェクト独自のプロパティであるかどうかを判断できます。

•オブジェクト属性の特徴


Object.getOwnPropertyDescriptor() を使用して、オブジェクトの特定のプロパティの記述子を取得します

Writable (書き込み可能) は、オブジェクトのプロパティが書き込み可能かどうかを示します

たとえば


var o = {
  foo : 'bar'
}
Object.defineProperty(o, "foo", { writable : false });
o.foo = 'world';
console.log(o.foo);//仍然输出bar
Enumerable は、オブジェクトのプロパティが列挙可能かどうかを示します

たとえば

配列の長さなどの属性の列挙は false なので、

for (p in Array) {
  console.log(p);
}
何も出力しません

構成可能性 (configurable) は、変更可能なプロパティの構成可能性と列挙可能性を示します

これらの構成プロパティは、Object.defineProperties を使用して定義できます。

Object.defineProperty(o, "foo", { 書き込み可能 : false });

Get は、オブジェクトのプロパティを取得するメソッドを表します

Set はオブジェクトのプロパティを設定するメソッドを表します


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的值

オブジェクトメソッド

toString はオブジェクトを文字列に変換します。デフォルトの変換は [object Object] のようなものになるため、json 形式に変換する必要がある場合は、JSON.stringify

を使用できます。

valueOf は、オブジェクトを他の型に変換する必要がある場合に使用されます。繰り返しになりますが、デフォルトの変換については特に言うことはありません。



実行可能オブジェクト

実行可能オブジェクトは次のメソッドで作成できます


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
は、オブジェクト (プロトタイプチェーンを使用) として、または直接呼び出される関数として使用できます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。