詳細拡張ES6オブジェクトメソッド

カタログを読みます

Object.assign(ターゲット、source_1、···)

概念:対象物(ターゲット)にコピーされ、すべての列挙属性のオブジェクトをマージするための方法であって、ソースオブジェクト(ソース)

特徴:、プロパティおよびメソッドを追加するクローン対象として複数のオブジェクトをマージし、プロパティのデフォルト値を指定します

ケース:

VaRの sourceObj1 = { 
    名: "ASSIGN" 
} 
VAR sourceObj2 = { 
    年齢: "18は" 
} 
VARの目標= {}; 
Object.assign(ターゲット、sourceObj1、sourceObj2)
にconsole.log(ターゲット); // {名「 ASSIGN「年齢」18である『とは} 

// 属性が以前の属性上書きした後、ターゲット・オブジェクトをソース・オブジェクトは、同じ名前の属性、または同じname属性のソースオブジェクトを複数有している
VaRの sourceObj3 = { 
    :名 ASSIGN1"』
} 
VARのターゲット2を= {}; 
Object.assign(ターゲット2、sourceObj1、sourceObj3)
にconsole.log(ターゲット2); // {名: "ASSIGN1"、年齢"18が"} 

//ソースオブジェクトは、文字列が何も効果が属性を列挙コピーず、ブール値であろうある

VAR sourceString = "ASSIGN"のがのvar = TARGET2 {}; 
(sourceStringのTARGET2、Object.assign trueに、18である
にconsole.log (TARGET2); // {0: "" ,. 1: "S"、2 "S" ,. 3: "I" ,. 4: "G" ,. 5: "N-"} 

// 文字列のみ包装オブジェクトは、実際の列挙定義済み属性を生成し、それらの属性は、[[primitiveValue] Object.assignコピーされないコピーされ 
、はconsole.log(sourceStringのオブジェクト())// 「」,. 1:{0 : "S"、2 "S" ,. 3: "I" ,. 4: "G" ,. 5: "N-"、長さ:. 6、[primitiveValue]:ASSIGN} 

// オブジェクト。ソースオブジェクトのコピー自体の属性のみ、限定されるコピーされた属性を割り当てる、列挙属性コピー、コピープロパティの継承されていないない
のvar target3 = {}; 
Object.assign(target3を、
  Object.defineProperty({}、'名前' 、{ 
    列挙:falseに
    値: 'ハロー' 
  })、
  Object.defineProperty({}、 '年齢' 、{ 
    列挙:trueに
    値: 18である
  }) 
にconsole.log(target3); // {年齢:18}である

// Object.assign浅いコピー方法はなくディープコピーより、実施される
// ソースオブジェクトのプロパティの値がオブジェクトである場合には、対象物の得られたコピーは、オブジェクトへの参照である
VaRの target4 = {}; 
sourceObj4 {名前= {値: "ASSIGN" }}; 
Object.assign(target4、sourceObj4); 
sourceObj4.name.age = 18である; 
にconsole.log(target4)。// {名:{値: "割り当てる"、年齢:18}}。
</ SCRIPT>

Object.is(値1、値2)(オブジェクト記述子)

概念:二つの値が同じ値であるか否かを決定します

ケース:

Object.is(ウィンドウ、ウィンドウ)。//  
Object.is({名: "ある"}、{名: "あります"})。//  
Object.is([]、[])。//  
Object.is(未定義、未定義)。//  
Object.is(ヌルヌル);  
Object.is( 0、-0)。  //  
Object.is(-0、-0)。  //  
Object.is(NaNで、0/0)。// 

Object.setPrototypeOf(オブジェクト)

概念:[[プロトタイプ]組み込みオブジェクトのプロパティを変更します

注:このメソッドは、パフォーマンスに影響を与え、使用を避け、代わりにObject.createを用いてもよいです

VAR OBJ = {};
 VARの OBJ1 = {名: "setPrototypeOf" }; 
Object.setPrototypeOf(OBJ、OBJ1)
はconsole.log(obj.name); // "setPrototypeOf" 

// アナログ新しいコマンド
VAR F. = 関数( ){};
 VARの F = Object.setPrototypeOf({}、F.prototype); 
F.call(F); 
// 等価
するvar F = 新しい新 F()。

Object.getPrototypeOf(オブジェクト)

コンセプト:パラメータオブジェクトのプロトタイプを返します。

ケース:

VAR F. = 関数(){}; // コンストラクタ
するvar F = 新しい新F(); 
Object.getPrototypeOf(F) === F.prototype // trueに

// 空のオブジェクトプロトタイプのObject.prototype 
Object.getPrototypeOf( {})===のObject.prototype // trueに

// のObject.prototypeプロトタイプがnull 
Object.getPrototypeOf(のObject.prototype)=== NULL  // trueに

// 関数プロトタイプはFunction.prototypeのある
関数F(){ } 
Object.getPrototypeOf(F) === Function.prototype // trueに

 

おすすめ

転載: www.cnblogs.com/zhangyaolan/p/11250960.html