簡體   English   中英

我不知道Object(this)的意思

[英]I have no idea Object(this) means

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

有一條線就像

// Steps 1-2.
if (this == null) {
  throw new TypeError('this is null or not defined');
}

var O = Object(this);          // <- WHAT IS THIS???????????

// Steps 3-5.
var len = O.length >>> 0;

// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;

// Step 8.
var k = relativeStart < 0 ?
  Math.max(len + relativeStart, 0) :
  Math.min(relativeStart, len);

// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
  len : end >> 0;

// Step 11.
var final = relativeEnd < 0 ?
  Math.max(len + relativeEnd, 0) :
  Math.min(relativeEnd, len);

// Step 12.
while (k < final) {
  O[k] = value;
  k++;
}

// Step 13.
return O;

我找不到將O指定為對象的必要性(this)。

它是為了可讀性而編寫的還是有任何特定的分配原因?

正如對代碼的評論中所建議的那樣,本節將准確地對規范中記錄的第一步進行pollyfill。

  1. 設O為ToObject(此值)。
  2. ReturnIfAbrupt(O)。

雖然有點無序,但這是執行ToObject(this value)的功能:

var O = Object(this);

基本上,如果在非對象上調用它,則應將非對象強制轉換為Object

例如,如果我們在本機支持此方法的JavaScript引擎中運行這些大多數無意義的代碼,我們會看到返回一個Number對象實例。

Array.prototype.fill.call(123);

該線將確保來自polyfill的相同結果。

當參數已經是對象時,Object構造函數返回其參數。 如果它不是一個對象,它返回參數的“objectified”版本:一個String實例,如果它是一個字符串,一個Number實例,如果它是一個數字,等等。

有問題的功能是有點怪異,特別的價值this 通常是一個對象呢。 沒有要,但你有種,有走出自己的方式去用的填充工具的內臟this值是不是一個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM