2016-10-04 5 views
0

せずに、私は(Array.prototype.includes用ポリフィルのためにMDNに探していた)、私は以下のオブジェクト()構文に出くわした:何ですかオブジェクト()新しいキーワードや.create方法

if (!Array.prototype.includes) { 
    Array.prototype.includes = function(searchElement /*, fromIndex*/) { 
'use strict'; 
if (this == null) { 
    throw new TypeError('Array.prototype.includes called on null or undefined'); 
} 
//This is the line in question 
var O = Object(this); 
var len = parseInt(O.length, 10) || 0; 
if (len === 0) { 
    return false; 
} 
var n = parseInt(arguments[1], 10) || 0; 
var k; 
if (n >= 0) { 
    k = n; 
} else { 
    k = len + n; 
    if (k < 0) {k = 0;} 
} 
var currentElement; 
while (k < len) { 
    currentElement = O[k]; 
    if (searchElement === currentElement || 
    (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN 
    return true; 
    } 
    k++; 
} 
    return false; 
    }; 
} 

この場合のオブジェクト(これ)とこれの目的は何ですか?

答えて

0

Object(...)は、渡された値をオブジェクトに変換します。すでにオブジェクトであれば値自体を返します。それ以外の場合は新しいオブジェクトを作成して返します。 specから

:オブジェクトを関数としてではなく、コンストラクタと呼ばれる

は、型変換を行います。

例:

var obj = Object("foo"); 
// same as 
// var obj = new String("foo"); 

この場合、この目的が何でありますか?

これは、値がプリミティブではなくオブジェクトであることを保証します。実装は、ちょうどspecを、次のとおりです。

  1. はOとしますか? ToObject(この値)。
+0

ありがとうございました! –

関連する問題