为什么我需要从另一个源指向 Array 构造函数,为什么我不能直接在数组对象上调用 toString()?


var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var _Array = window.frames[window.frames.length-1].Array;
var arr = new _Array(1,2,3);
typeof arr; //'object'
arr instanceof Array; //false

我有3个有关此代码的问题:

  1. object.protype出现在_ array和数组原型的原型链上,但数组和_array不在同一链中,因此(arr instanceof array)返回false?

  2. 我想了解这里到底发生了什么,这些是我的想法:_ array指向与" windows.iframe [...]。阵列"点的构造函数,然后我们创建一个_array的实例,其 proto 指向array.protype和 array.prototype.proto 指向object.protype。因此,_array和数组都是数组对象的构造函数,这些构造源是从object.protype继承的。那么,为什么我需要直接从object.protype直接调用toString()才能在_array和Array对象上获取" [对象阵列]"?当我这样称呼时:arr.tostring()我会得到一个空字符串,当我打电话时object.prototype.tostring.call(arr)我得到" [对象阵列]"。为什么是?

  3. 有人可以解释一下,为什么我需要从另一个来源指向数组构造函数?在此代码中,_array指向与" windows.iframe [...]。数组"指向的构造函数。为什么有用?

Array Just 一个具有行为的数据结构;有许多数组实现,您也可以实现自己的。

  1. 我想了解这里到底发生了什么...
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// Accessing a new type of Array
var _Array =
  window.frames[window.frames.length-1].Array;
// Instantiates new array of type "_Array" (declared in iframe)
var arr = new _Array(1,2,3); // [1,2,3]
// Shows the type of arr variable
typeof arr; //-> 'object'
// Asserting that the "arr" instance is not in an instance of type "Array" (native Javascript type), rather it is of the type declared in the iframe
arr instanceof Array; //-> false
  1. (...)为什么有用?

请注意,此代码本身无用(这是一个示例片段),其可能的目标是显示

  • JavaScript中的基本类型相关操作
  • iframe持有数据的可能性,例如新类型(Array

最新更新