cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Sekeping kod dalam kaedah primitif tatasusunan

var t = Objek([1,2,3]);
var len = t.panjang >>> 0;
Apakah maksud kod ini? Mengapakah tatasusunan perlu ditukar kepada objek? Adakah ini bermakna ia ditukar kepada objek seperti tatasusunan

ringa_leeringa_lee2758 hari yang lalu451

membalas semua(2)saya akan balas

  • 怪我咯

    怪我咯2017-05-16 13:27:11

    Object([value])用法及功能:
    - 如果value为基元数据类型Boolean、Number、String,则返回对应类型的对象,例如:Boolean对象、Number对象、String对象。
    - 如果value本身为对象,则不对其作任何更改,返回其本身。
    - 如果省略了value参数,或value为null、undefined,则返回自身无任何属性的Object对象。
    
    var t = Object([1,2,3]);
    console.log(t===[1,2,3]); // false
    上面的代码中,value=[1,2,3],此时[1,2,3]并不是一个数组,因为它既没有new Array, 又没有对象字面量赋值,并不算是一个array,而Object([1,2,3]) 可以将其转化为数组对象,所以打印t===[1,2,3]为false。
    
    再看下面:
    var a = [1,2,3];
    var t = Object(a);
    console.log(a,typeof a, Array.isArray(a),t,typeof t, Array.isArray(t),t===a, t===[1,2,3]); 
    // [1, 2, 3] "object" true [1, 2, 3] "object" true true false
    
    因为a = [1,2,3]定义了一个字面量数组,而数组也是对象,所以匹配到了第二条,返回了它本身,所以此时a===t。
    
    
    t.length >>> 0; 
    上面的代码中,把t.length这个值改为二进制,然后像又移了0位,也是没有任何意义的。
    可能是因为没有上下文,单纯两行代码只能看出这么多了。

    balas
    0
  • PHPz

    PHPz2017-05-16 13:27:11

    Sepatutnya terdapat lebih banyak kod, bukankah hanya dua ayat ini?

    balas
    0
  • Batalbalas