あなたが知らないjs(配列とオブジェクトの一部の属性)


配列:
Array(1,2,3)   new Array(1,2,3)       ;  new        ;
Array               ,                ;         undefined;
Array(3)
// [empty × 3] 

配列に直接属性を追加し、配列のlength属性は変化しません.
let arr = [ 'a', 'b', 'c' ];
arr['name'] = 4;
console.log(arr);  // ["a", "d", "c", name: 4]
arr.length // 3

キー/値ペアはオブジェクトのみで格納し、配列のみで数値の下付き/値ペアを格納することが望ましい.
arr[‘3’] = ‘d’;
arr.length = 4

アトリビュート名は数値のように表示され、数値の下付きになります.
いくつかの配列方法
forEachは配列内のすべての値を巡回し、コールバック関数の戻り値を無視します.
everyはコールバック関数がfalse(または偽値)を返すまで実行されます.
someはコールバック関数がtrue(または真の値)を返すまで実行されます.
everyとsomeはbreakを使用してループを終了できます
for...of直接遍歴値(反復器を定義する必要がある)for...ofループは、まず、アクセス対象オブジェクトに反復器オブジェクトを要求し、反復器オブジェクトのnext()メソッドを呼び出すことで、すべての戻り値を遍歴します.@@iterator自体は反復オブジェクトではなく、反復オブジェクトを返す関数です.
var myArray = [ 1, 2, 3 ];
var it = myArray[Symbol.iterator]();
it.next(); // { value:1, done:false }
it.next(); // { value:2, done:false }
it.next(); // { value:3, done:false }
it.next(); // { done:true }

オブジェクトgetownPropertyDescriptorは自分で探すだけ
var obj = { a:2 }
Object.getOwnPropertyDescriptor(obj,’a’)
1. configurable: true //     , true      defineProperty        
2. enumerable: true  //     
3. value: 2   //  
4. writable: true  //     , true     

            ,    undefined
Object.getOwnPropertyDescriptor(obj,'b’)
// undefined 

obj.__proto__.name = 'zg'
"zg"
obj.name
"zg"
Object.getOwnPropertyDescriptor(obj,'name')
undefined
           

ObjectでdefineProperty(...)を使用して、新しいプロパティを追加するか、既存のプロパティ(configurable:trueの場合)を変更してプロパティを設定します.オブジェクト定数:オブジェクトのwritable:false、configurable:falseを変更、再定義、削除できない定数属性を作成します.
拡張禁止preventExtensions
Object.preventExtensions();
var obj = {
    name:"zc"
};
Object.preventExtensions(obj);
obj.name = ‘haha’;
console.log(obj) //{name: "haha”},         
obj.sex = 'men'
"men"
obj
{name: "haha”} //            

Object.defineProperty(obj,'name',{
    configurable:false, //     
    writable:false //     
})
  obj         ,    ,    ,     
             ,            ,     
            Object.preventExtensions,     ,     
     (
 configurable:false, //      ,
writable:false //     
 )

Object.seal = Object.preventExtensions+configurable:false密封Object.freeze = Object.seal + writable:false Object.freeze 、 Object.seal 、 Object.preventExtensionは現在のオブジェクトのみを対象とし、オブジェクトのプロパティがオブジェクトである場合、このオブジェクトを巡回しない限り、順次フリーズします.