关于prototype的一点疑惑

athlan2000 2014-06-06 05:04:41
代码如下:

function a(){
}
var arr = new Array();
a.prototype = arr;
var as = new a();

arr.push(1);
as.push(2);
as.push(3);
console.log(as);

我想问下 输出的as值觉得不太懂

原型arr加入的1没有输出,但是length算作是3,麻烦有谁能解释一下原理,谢谢了...
...全文
230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
athlan2000 2014-06-08
  • 打赏
  • 举报
回复
结贴啦 http://www.dewen.org/q/16828/js%E5%85%B3%E4%BA%8Eprototype%E7%9A%84%E4%B8%80%E7%82%B9%E7%96%91%E6%83%91 这里的提问我得到了满意的答复,有兴趣的,可以去看看
倾城Shadow 2014-06-08
  • 打赏
  • 举报
回复
athlan2000 2014-06-07
  • 打赏
  • 举报
回复
引用 6 楼 u011278496 的回复:
http://blog.csdn.net/xiaohulunb/article/details/28965347 最近研究中,貌似很绕口。慢慢理解吧
我困惑的是,arr.push(1)之后会影响到as的length+1,我认为这种解释不太靠谱,毕竟是原型链里的push应该不会影响到子对象的属性, 所以我这里觉得一个解释就是 当调用as.length的时候,他会去重新计算一遍元素个数,而在计算length的时候会去向上查找到原型链里的元素,不知道是不是我这种解释,但是如果是这种解释,那每次调用length都要重新计算一遍长度,这貌似跟别的语言的数组不太一样.....
athlan2000 2014-06-07
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
node.js不懂。。浏览器的解析是正常的。。
对的,我发现浏览器里显示正常的......但是nodejs 输出竟然不一样.....
2.wa 2014-06-07
  • 打赏
  • 举报
回复


http://blog.csdn.net/xiaohulunb/article/details/28965347

最近研究中,貌似很绕口。慢慢理解吧
Go 旅城通票 2014-06-07
  • 打赏
  • 举报
回复
node.js不懂。。浏览器的解析是正常的。。

zhjdg 2014-06-07
  • 打赏
  • 举报
回复
装个调试器,看看那条链。 看懂链后,想想console.log里面是一些什么内容。
athlan2000 2014-06-07
  • 打赏
  • 举报
回复
自己顶一下哈
athlan2000 2014-06-06
  • 打赏
  • 举报
回复
公用一块内存的话,你可以试试console.log(arr); 这里面只有1个元素 需要安装nodejs
jiangbai333 2014-06-06
  • 打赏
  • 举报
回复
好像这里面数组arr是引用型 后面用它和自己用它共用了一块内存 这样执行js需要安装什么?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧