JavaScript高级程序设计-第3版-中 有这么一段话: 在操作对象时,实际上是在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的①. ① 这种说法不严密,当复制保存着对象的某个变量时,操作的是对象的引用.但在为对象添加属性时,操作的是实际的对象. 这里的重点是①的注释,初次看的时候没有理解,后来理解了,举个例子: 先看①的前半句,比较好理解: 当复制保存着对象的某个变量时,操作的是对象的引用. var a = { n: 2 }; //这里把 { n: 2 } 赋值给 a,实…
目录 一.场景 二.浅拷贝 三.深拷贝 一.场景 除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝 将一个对象赋值给另外一个对象. var a = [1,2,3]; var b = a; b.push(4); // b中添加了一个4 alert(a); // a变成了[1,2,3,4] 自定义对象 var obj = {a:10}; var obj2 = obj; obj2.a = 20; // obj2.a改变了, alert(obj.a); // 20,o…
Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己,可通过内建函数id(obj)查看. 2.type,对象的类型决定了该对象可以保存什么类型的值,可用内建函数type(obj)查看: 3.value,即对象的值. 下面是一个例子: >>> str = "hello world" >>> type(str…
本文參考<Android系统源码情景分析>,作者罗升阳. 一.Binder库(libbinder)代码: ~/Android/frameworks/base/libs/binder ----BpBinder.cpp ----Parcel.cpp ----ProcessState.cpp ----Binder.cpp ----IInterface.cpp ----IPCThreadState.cpp ----IServiceManager.cpp ----Static.cpp ~/Android…
又进入到了新的一周,现在到总结的时间了,继续为大家总结一下今天在云和学院所学的知识. 理论: StringBuilder 和 String 的区别    String 在进行运算时(如赋值.拼接等)会产生一个新的实例,而 StringBuilder 则不会.所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String:  如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类.两个类的工作原理不同:String类是…
先看第一种情况:返回一个局部对象的引用.它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的.也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的.所谓生命空间,是指它们所在的函数体.当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁.因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了. 第二种情况:返回函数内部用new初始化的指针的引用 inline const rational& operator*(const…
什么是不可变对象? 众所周知, 在Java中, String类是不可变的.那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的.不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变. 区分对象和对象的引用 对于Java初学者, 对于String是不可变对象总是存有疑惑.看下面代码: String s = "ABCabc";…
一.客户端中的window对象 window对象表示当前浏览器的窗口,它是一个顶级对象,我们创建的所有对象.函数.变量都是window对象的成员. window对象自带了一些非常有用的方法.属性. window的子对象: document:可操作显示在窗口的文档内容. location:可让窗口载入新的URL. navigator:包含当前浏览器的信息. history:包含当前浏览器的历史. window的方法: open():打开一个新的窗体. close():关闭窗体. window对话框…
DOM对象 windows:属性:opener(打开者) 方法:open().close(),setTimeout().setInterval()... location:属性:href 方法:reload()刷新 history:方法:go() status:不常用 document:下面详细介绍 JS对document对像的操作 分两个: 找到对象.操作对象. 找到对象的方法:document.getElementById().document.getElementsByName(). do…
循环绑定=>变量污染 for (var i = 0;i<lis.length;i++){ lis[i].index = i;#给页面元素对象添加一个任意属性(保留索引的属性index) #循环绑定时,i分别是0,1,2,3,也就是给每个li进行事件的绑定,在绑定时,没有执行事件内部代码,只有在激活事件时才会执行,当循环结束后,i变为4(length为4),激活事件时,i已经变为4,console.log(i)打印的都是4 lis[i].onclick = function(){ console…