关于对象引用的作用域

var cat ={};
cat.mouse = function(){var b="1111"};
var dog =
cat;
console.log(dog);
console.log(dog.mouse);
dog.mouse =
function(){var b="2222"};
dog.hat="b";
console.log(cat)

Object {mouse: function}

  1. hat: "b"

  2. mouse: function (){var b="2222"}

  3. __proto__: Object

function (){var
b="1111"}

Object {mouse: function, hat: "b"}

  1. hat: "b"

  2. mouse: function (){var b="2222"}

  3. __proto__: Object

对象赋值后,指向了同一个对象,及时改变的是第二个对象,第一个对象也跟着变。

时间: 2024-10-05 22:54:25

关于对象引用的作用域的相关文章

Java学习笔记2-一切都是对象

创建句柄:String s = "abc"; 创建对象:String s= new String("abc"); 程序运行时数据可能保持的位置: 寄存器(register):最快的,但是有编译器分配,我们没法控制 堆栈(stack):存在于 RAM 区域,Java 对象句柄/引用和基础类型的变量值会存放在这里 堆(heap):堆里分配存储空间会花掉更长时间,Java 对象实例和数组会保存在这里 静态存储(static storage):RAM 中的固定位置,使用 s

js 欺骗词法作用域

如果词法作用域完全由写代码期间函数所声明的位置来定义,怎样才能在运行时来"修改"(也可以说欺骗)词法作用域呢?    JavaScript 中有两种机制来实现这个目的.社区普遍认为在代码中使用这两种机制并不是什么好注意.但是关于它们的争论通常会忽略掉最重要的点:欺骗词法作用域会导致性能下降.在详细解释性能问题之前,先来看看这两种机制分别是什么原理 1.eval JavaScript 中的 eval(..) 函数可以接受一个字符串为参数,并将其中的内容视为好像在书写时就存在于程序中这个位

javascript函数及作用域的小结

在js中使用函数注意三点:1.函数被调用时,它是运行在他被声明时的语法环境中的: 2.函数自己无法运行,它总是被对象调用的,函数运行时,函数体内的this指针指向调用该函数的对象,如果调用函数时没有明确指定该对象, this 默认指向 window ( strict 模式除外,本文不涉及 strict 模式): 3.函数是一种带有可执行代码的对象类型数据. 一.声明函数 1.使用 function 关键字 代码如下: function myfun(a,b){ //声明名为myfun的函数 ret

第六条:消除过期的对象引用

Java的垃圾回收机制并不代表我们不需要考虑内存管理的问题. 考虑: public class Stack { pprivate Object[] elements; private int size = 0; private static final int DEFAULT_INITAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITAL_CAPACITY]; } public void push(Objec

javascript的函数,作用域,闭包

函数具有两个功能,一个是声明创建功能,在声明时就创建了一个函数对象,另一个是运行功能,在函数体内进行逻辑操作. 首先看下面的例子: function Fn(){console.log("Fn")}; Fn(); 第一句是函数的声明时,第二句是函数运行时.function类型的对象比object类型的对象多了个运行时.那么我们来了解一下这两个时间里,函数做了什么? 函数在声明时: 创建了一个函数对象(作为当前所在的函数对象的OA对象的属性,这句的理解要看完运行时),并且为这个函数对象添加

第一百零六节,JavaScript变量作用域及内存

JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 一.变量及作用域 1.基本类型和引用类型的值 ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是那些保存在栈

javascript 函数及作用域总结介绍

在js中使用函数注意三点: 1.函数被调用时,它是运行在他被声明时的语法环境中的: 2.函数自己无法运行,它总是被对象调用的,函数运行时,函数体内的this指针指向调用该函数的对象,如果调用函数时没有明确指定该对象, this 默认指向 window ( strict 模式除外,本文不涉及 strict 模式): 3.函数是一种带有可执行代码的对象类型数据. 一.声明函数 1.使用 function 关键字 代码如下: function myfun(a,b){ //声明名为myfun的函数 re

详解js变量、作用域及内存

详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4 原文出处: trigkit4 基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的. JavaScript 1 2 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间.由于这种值的大小不固定(对象有很多属性和方

js中变量、作用域及内存

一.变量及作用域 1.基本类型和引用类型的值 ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置.而引用类型值则是指那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象. 将一个值赋给变量时,解析器必须确定这个值是基本类型值,还是引用类型值.基本类型值有以下几种:Undefined.Null.Boolean.Number和Str