变量的赋值和对象的赋值

先看demo

//demo1var a = 3;
var b = a;
b = 5;
console.log(a);               //3
------------------------------------------------//demo2
var obj1 = {
    monney:1000
}
var obj2 = obj1;
obj2.monney = 500;
console.log( obj1.monney);   //500

why?

这样主要是js中两种数据类型不同的机制。

基本数据类型:num, string, boolean, null, undefined.

引用类型      :object, Array, function, date  

so?

基本类型的赋值就相当于复制了一个副本,之后互不相干,所以demo1中,a赋值给b之后,任你b怎么改变,与我何干?

引用类型就不一样了,相当于把引用地址赋值给别人,或者说你把家钥匙给了别人,之后别人把你家电视搬走,那是不是别人的行为使你拥有的东西改变了?

--------------------再温习一下数据类型-----------------------------

基本数据类型前三个就不说了,说说各自说说null, undefined,最后再进行对比一下。

null:字面的意思就是,空,无。可以用null表示一个尚未存在的对象,当对象的属性赋值为null,表示删除该属性,被垃圾回收机制回收了。

undefined:在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined。

console.log(typeof null);          //object

console.log(typeof undefined);  //undefine

ECM说null是一个不存在的对象的占位符,其实null就是js对象原型链的终点,即:Object.prototype.__proto__ 为null。而null表示没有对象,可以这么理解:万物皆是从无到有,这个 "无" 不就是 null 了么???这就扯到另外一个话题了。

----copy一份----

alert(typeof 1);                // 返回字符串"number"
alert(typeof "1");              // 返回字符串"string"
alert(typeof true);             // 返回字符串"boolean"
alert(typeof {});               // 返回字符串"object"
alert(typeof []);               // 返回字符串"object "
alert(typeof function(){});     // 返回字符串"function"
alert(typeof null);             // 返回字符串"object"
alert(typeof undefined);        // 返回字符串"undefined"
时间: 2024-10-23 00:25:45

变量的赋值和对象的赋值的相关文章

Python把同一个对象循环赋值给另外一个变量

Python把同一个对象循环赋值给另外一个变量,修改一个对象,其他对象也修改了 >>> row=['_'] * 3 >>> board = [] >>> for i in range(3): ... board.append(row) ... >>> row ['_', '_', '_'] >>> board [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] &g

C++:对象的赋值和复制

3.6.1 对象赋值语句 如同基本类型赋值语句一样,同类型的对象之间也可以进行赋值,即一个对象的值可以赋给另一个对象.这里所指的对象的赋值是指对其中的数据成员赋值,而不对成员函数赋值.例如:A和B是同一类的两个对象,那么下述对象赋值语句 B=A: 就能把对象A的数据成员的值逐位复制给对象B //例3.24 对象赋值语句示例 #include<iostream> using namespace std; class Myclass{ public: void set(int i,int j) {

不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 对象的动态创建和释放 对象的赋值和复制 静态属性和静态函数 类模板 示例1.CppEmployee 类CppEmployee.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppEmployee { int Number; // 默认为 private private: // 以下都是

Effective C++ 条款11,12 在operator= 中处理&ldquo;自我赋值&rdquo; || 复制对象时不要忘记每一个成分

1.潜在的自我赋值     a[i] = a[j];     *px = *py; 当两个对象来自同一个继承体系时,他们甚至不需要声明为相同类型就可能造成别名. 现在担心的问题是:假如指向同一个对象,当其中一个对象被删,另一个也被删,这会造成不想要的结果. 该怎么办? 比如:   widget& widget:: operator+ (const widget& rhs) {    delete pd;    pd = new bitmap(*rhs.pb);    return *thi

Golang学习笔记(3)---go语言变量、常量的定义及赋值

单个变量的赋值与声明 变量的声明格式:var  <变量名称>  <变量类型> 变量的赋值格式:<变量名称> = <表达式> 声明的同时赋值:var <变量名称> [变量类型] = <表达式> <变量名> := <变量值>  --->只能在函数体内使用 多个变量的复制与声明 全局变量的声明可以使用var()的方式简写 全局变量的声明不可以省略var,但可使用并行的方式 所有变量都可以使用类型推断 并行方式的

verilog同一个reg变量同时发生多个阻塞赋值的情况分析

1 module main(); 2 reg [5:0] a=0; 3 reg [5:0] b=0; 4 reg clk=0; 5 6 always@(clk) 7 begin 8 a<=a+3; 9 b<=b+1; 10 end 11 12 always@(b) 13 begin 14 a<=a+2; 15 end 16 17 always #50 clk=~clk; 18 endmodule 看看上面的输出结果是什么? 在看看这段代码: 1 module main(); 2 reg

C++ 对象的赋值和复制 基本的

对象的赋值 如果对一个类定义了两个或多个对象,则这些对象之间是可以进行赋值,或者说,一个对象的值可以赋值给另一个同类的对象.这里所指的值是指对象中所有数       据的成员的值.对象之间进行赋值是“=”进行的,对象赋值的形式如下: 对象名1=对象名2; #include <iostream>using namespace std;class Box{public: Box(int =10,int =10,int =10); int volume();private: int height;

【C++】继承派生中对象相互赋值情况

//继承派生中对象相互赋值情况 //派生类的对象可以赋值给基类的对象,这时是把派生类对象中从对应基类中继承来的隐藏对象赋值给基类对象. //反过来不行,因为派生类的新成员无值可赋. #include <iostream> using namespace std; class B { public: B() { cout<<"B"<<endl; } void fun() { cout<<"B::fun()"<<

007-ant design 对象属性赋值,双向绑定

1.state对象属性赋值 设对象为 state={ datavalue:{ id:'', name:'', }, } 修改对象属性为: SetName=(e)=>{ let val=e.target.value; let data = Object.assign({}, this.state.datavalue, { name: val }) this.setState({ datavalue: data }) console.log(this.state.datavalue,data) }