繁体   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