前書き
この記事で説明する内容はについてES 14种操作对象的方法
ですので、本日質問させていただければ一緒に見ていきましょう。
星を見上げる人は笑ってはいけません
記事ディレクトリ
ES 14のオブジェクト操作方法
プロトタイプを入手する
var obj = {
a:1,b:2};
// 1.获取原型 [[GetPrototypeOf]]
var proto = Object.getPrototypeOf(obj);
console.log(proto);
console.log(obj.__proto__);
console.log(Object.prototype);
印刷結果は次のとおりです。
プロトタイプをセットアップする
var obj = {
a: 1, b: 2 };
// 2.设置原型 [[SetPrototypeOf]]
Object.setPrototypeOf(obj, {
c: 3, d: 4 });
// 同样也可以采用如下两种方式,直接赋值
// obj.__proro__ = xxx;
// Object.prototype = xxx;
console.log(obj);
印刷結果は次のとおりです。
オブジェクト取得のスケーラビリティ
var obj = {
a: 1, b: 2 };
// 3.获取对象的可拓展性 [[IsExtensible]]
var extensible = Object.isExtensible(obj);
console.log(extensible);
// 冻结对象
Object.freeze(obj);
var extensible2 = Object.isExtensible(obj);
console.log(extensible2);
印刷結果はtrue false
です。
ああ、そこから新しいものを見つけましたfreeze
、アクションは凍結されたオブジェクトです。閉じたオブジェクトseal
と呼ばれる関連オブジェクトがあります(自閉症...ジョークと呼ばれ^_^
ます)、または例を上げて比較して、最初にseal
閉じたオブジェクトを導入します:
var obj = {
a: 1, b: 2 };
Object.seal(obj);
obj.c = 3; // 不可修改
console.log(obj);
delete obj.a; // 不可删除
console.log(obj);
obj.b = 3; // 可写
console.log(obj);
印刷結果は、変更不可、削除不可、書き込み可能の 3つのポイントを要約した次のとおりです。プラス可読。
var obj = {
a: 1, b: 2 };
Object.freeze(obj);
obj.c = 3; // 不可修改
console.log(obj);
delete obj.a; // 不可删除
console.log(obj);
obj.b = 3; // 不可写
console.log(obj);
for (var key in obj) {
console.log(obj[key]);
}
印刷結果は、変更不可、削除不可、書き込み不可、読み取り専用の3つのポイントを要約した次のとおりです。
自分のプロパティを取得する
var obj = {
a: 1, b: 2 };
// 4.获取自有属性 [[getOwnProperty]]
Object.setPrototypeOf(obj, {
c: 3, d: 4 });
console.log(Object.getOwnPropertyNames(obj));
答えは[ 'a', 'b' ]
です。
禁止延長
var obj = {
a: 1, b: 2 };
// 5.禁止拓展对象 [[PreventExtensions]]
Object.preventExtensions(obj);
obj.c = 3;
console.log(obj);
delete obj.a;
console.log(obj);
答えは{ a: 1, b: 2 }
、展開に反対する{ b: 2 }
ことはできませobj
んが、削除することはできます。簡単に言うと、属性を追加することは禁止されていますが、属性は削除できます。
オブジェクト操作の傍受
// var obj = { a: 1, b: 2 };
// 6.拦截对象操作 [[DefineOwnProperty]]
// Object.defineProperty()
それが独自の属性であるかどうかを判別する
var obj = {
a: 1, b: 2 };
// 7.判断是否是自身属性 [[HasProperty]]
console.log(obj.hasOwnProperty('a'));
答えはtrue
です。
オブジェクトのプロパティを取得する
var obj = {
a: 1, b: 2 };
// 8.获取对象属性 [[Get]]
console.log('c' in obj);
console.log('a' in obj);
console.log(obj.a);
印刷結果は次のとおりです。
false
true
1
オブジェクトのプロパティを設定する
var obj = {
a: 1, b: 2 };
// 9.设置对象属性 [[SET]]
obj.a = 3;
obj['b'] = 4;
console.log(obj);
答える{ a: 3, b: 4 }
。
オブジェクトのプロパティを削除する
var obj = {
a: 1, b: 2 };
// 10.删除对象属性 [[Delete]]
delete obj.a;
console.log(obj);
答えは{ b: 2 }
です。
オブジェクトのプロパティを列挙する
var obj = {
a: 1, b: 2 };
// 11. 枚举 [[Enumerate]]
for (var k in obj) {
console.log(obj[k]);
}
1
2
キーコレクションを取得する
var obj = {
a: 1, b: 2 };
// 12.获取键集合 [[OwnPropertyKeys]]
console.log(Object.keys(obj));
回答 [ 'a', 'b' ]
関数を呼び出す
// 13.调用函数
var obj = {
a: 1, b: 2 };
function test() {
}
test();
obj.test = function () {
}
obj.test();
newはオブジェクトをインスタンス化します
// 14.实例化对象
function Test() {
};
new Test();
やっと
記事の出力は簡単ではありません。みなさんがwaveをサポートしてくれることを願っています!
過去の選択:
友達が読んで遊ぶのに便利なChaoyiのブログにアクセスしてください〜
学如逆水行舟,不进则退