「javaScript高級プログラム設計-第6章」を読んで対象を理解します.
3615 ワード
ECMA−262は、オブジェクトを、基本値、オブジェクト、または関数を含む無秩序属性のセットとして定義します.したがって、オブジェクトは名前ペアのセットであり、名前はオブジェクトの属性ごとの名前であり、名前は一つの値にマッピングされていることが分かります.
一、オブジェクトの作成
オブジェクトの作成には2つの方法があります.
方式1
二、オブジェクト属性の特性
オブジェクトの属性は、2つの属性に分けることができます.データ属性、アクセス属性です.二つのタイプの属性はそれぞれの特性があります.データ属性: アクセス器のプロパティ: 特性のアクセス方法: Object.defineProperty()例: Object.defineProperties()は、複数の属性を一度に定義することができる. Object.getOwn PropertyDescriptor()は、属性の特性を読み取るために使用される.二つのパラメータを受け付けます.属性があるオブジェクトと、その特性を読み取る属性名、戻り時にその特性のオブジェクトは例えば です.
一、オブジェクトの作成
オブジェクトの作成には2つの方法があります.
方式1
var person=new Object();
person.name=“Jone”;
person.age=20;
person.job=“Software Engineer”;
person.sayName=function(){
alert(this.name);
};
方式二var person={
name:”Jone”,
age:20,
job:“Software Engineer”,
sayName:function(){
alert(this.name);
}
};
この2つの方法で作成したオブジェクトは同じです.フレキシブルに混合して使用することもできますが、var person=new Object()
とvar person={
name:”Jone”,
age:20,
job:“Software Engineer”,
sayName:function(){
alert(this.name);
}
}
すべてはpersonのための賦課であり、重複した賦課はできません.もし繰り返し使うなら、前の値の放棄に相当します.その後再賦課された値を使います.あるいは、personに新しい住所を指しています.住所には新しいオブジェクトが保存されています.personは、参照タイプであると判断したので、任意の場所において、属性とアクセス属性を追加してもよい.例えば、person.sex=“ ”
.personはポイントで訪問する時は、personのためにアドレスを変更しません.変更したのは住所に保存されているオブジェクトです.二、オブジェクト属性の特性
オブジェクトの属性は、2つの属性に分けることができます.データ属性、アクセス属性です.二つのタイプの属性はそれぞれの特性があります.
[[configurable]]: delete , , 。
[[enumerable]]: for-in 。
[[writable]]: 。
[[value]]: 。 , ; , 。 undefined。
, configurable、enumerable、writable true。
[[configurable]]: delete , , 。
[[enumerable]]: for-in 。
[[get]]: 。 undefined
[[set]]: 。 undefined
, configurable、enumerable true。
アクセス器属性の使用方法としては、属性の値を設定すると他の属性が変化します.アクセス器属性のget
、set
の特性は直接定義できないが、Object.defineProperty()
を使用して定義され、属性のget
、set
の特性とwritable
、value
の特性は同時に存在しない.var book={};
Object.defineProperty(book,”year”,{
configurable:true,
value:2004
});
Object.defineProperty(person,”_year”,{
configurable:true,
get:function(){
return this.year;
},
set:function(newValue){
if(newValue>2004){
this.year=newValue;
}
}
});
新しい属性を作成するか、属性の特性を変更します.新しい属性を作成する場合、指定されていない場合、configurable
、enumerable
、writable
のデフォルト値は全部false
です.configurable
がfalse
に設定されると、true
に戻すことができなくなり、Object.defineProperty()
を呼び出してwritable
以外の特性を修正するとエラーが発生します.var book={};
Object.defineProperties(book,{
year:{
configurable:true,
value:2004
},
_year:{
configurable:true,
get:function(){
return this.year;
},
set:function(newValue){
if(newValue>2004){
this.year=newValue;
}
}
}
});
var descriptor=Object.getOwnPropertyDescriptor(book,”year”);
alert(descriptor.value);//2004
alert(descriptor.configurable);//true
この本の第6章の対象に向けたプログラミングを読みました.私は3つのノートを作りました.これは第一編で、後には二つの編があります.それぞれパッケージ類と継承です.以前は本当に問題を理解したと思っていましたが、それをはっきり説明できます.よく説明してから書きやすくなりました.今ははっきり書くのが本当に難しいです.一つ一つの言葉を吟味するのは無駄話ではなく、違った意味がないので、なるべく少ない字句を使うなどしています.長い間喋っていましたが、よく書けましたか?どこか問題があれば、指摘してください.