关于JS的引用与传值

JS基本数据类型有undefined,boolean,number,string,null,是传值赋值。
除此之外JS的其它类型都是引用类型,变量中存的不是值,而是地址。

var A = {
    a: function() {
        console.log("改变之前");
    }
}

var B = { }
B.a = A.a;
B.a(); // 改变之前
A.a = function() {
    console.log("改变之后");
}
B.a(); // 改变之前

代码中很简单很常见也很容易出错的例子,对吧?
A.a,B.a都只是一个变量,存储着function(){}对象的地址,B.a = A.a,实际上是将A.a存的地址复制给B.a,当A.a存储的地址改变后,不会影响B.a的地址,B.a存的地址仍然是之前A.a赋给它的,不要误认为B.a指向A.a,A.a指向function!

其实我最近在研究es5中的继承机制,碰到复制原型的继承方法时产生这个困惑,记录一下这个问题,也算为我之后准备写的一篇关于es5中原型链继承和断开原型链的复制继承做个铺垫。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,619评论 0 106
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,358评论 0 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,830评论 25 709
  • 我想在这 寂寞的雨巷 遇见一个 如你一般的姑娘 不求长厢 只求 那刹那的光芒
    石巢生阅读 216评论 0 5
  • 文/陈墨祎 我最近在简书上发表的一篇文是2016年11月11日,仔细算算,离开简书已经差不多半年了。我这半年的时间...
    陈墨祎阅读 677评论 7 14