gpt4 book ai didi

javascript - 拼接功能在这里如何工作?

转载 作者:行者123 更新时间:2023-11-29 18:14:00 25 4
gpt4 key购买 nike

请帮助我理解这个例子。

function fun(a){
this.length = 1;
this.splice = [].splice;
this[0] = a;
return this;
};

现在,当我执行这个函数时,结果是一个数组。

f = new fun('hi');// result will be : ["hi"]

这是为什么?

如果我删除 this.length=1this.splice = [].splice,结果会不同。

f = new fun('hi'); // result will be : fun {0: "a", splice: function}

这是为什么?

我也看到 jQuery 中使用了这种技术。请向我描述这是如何以编程方式工作的。

最佳答案

它没有任何程序化的内容。这只是浏览器/js 引擎选择在控制台中向您显示一些变量的方式。

控制台通常供开发人员使用,因为他们是打开这些东西的人。因此,浏览器会进行一些嗅探,以向开发人员显示他/她正在处理的对象是什么。如果它看起来像一个数组,它可能应该像一个数组一样打印。

如下表所示,浏览器之间存在一些差异。即,IE 和 node 什么都不做。我的解释是,在节点中打印应该产生完整的 View ,而不仅仅是嗅探 View 。 length 似乎满足 Opera 12 将其显示为数组。

为什么浏览器使用indexlengthsplice 是完全不同的故事。它可能是表示具有高概率的数组的最小属性集。看看,不是数组还能是什么?

Chrome 36、Firefox 30 和 Opera 18 的行为方式相同:

  • 有趣原样是["hi"]
  • fun 没有 lengthfun { 0: 'hi', splice: function}
  • fun 没有 splicefun { 0: 'hi', length: 1}

歌剧 12 场演出:

  • fun 原样是 Object ["hi"]
  • fun 没有 lengthObject
  • fun 没有 spliceObject ["hi"]

IE 9 和 node v0.8 根本没有嗅探(这里是 IE 输出,node 输出非常相似):

  • fun 原样是 {0 : "hi", length : 1, splice : function splice() { [native code] }}
  • fun 没有 length{0 : "hi", splice : function splice() { [native code] }}<
  • fun 没有 splice{0 : "hi", length : 1}

关于javascript - 拼接功能在这里如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24930737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com