go 的实现
package main
import "fmt"
type M struct {
Num int64
}
func T1() {
fmt.Printf("----T1----\n")
a := M{1}
b := a
fmt.Printf("%+v\n", a)
fmt.Printf("%+v\n", b)
a.Num = 2
fmt.Printf("%+v\n", a)
fmt.Printf("%+v\n", b)
}
func T2() {
fmt.Printf("----T2----\n")
a := &M{1}
b := a
fmt.Printf("%+v\n", a)
fmt.Printf("%+v\n", b)
a.Num = 2
fmt.Printf("%+v\n", a)
fmt.Printf("%+v\n", b)
}
func main() {
T1()
T2()
}
输出结果
----T1----
{Num:1}
{Num:1}
{Num:2}
{Num:1}
----T2----
&{Num:1}
&{Num:1}
&{Num:2}
&{Num:2}
js 的实现
function T2(){
let a = {num: 1}
let b = a
console.log(a)
console.log(b)
a.num = 2
console.log(a)
console.log(b)
}
输出结果
{num: 1}
{num: 1}
{num: 2}
{num: 2}
如何使用 js 实现 golang 的 T1 方法?除了深拷贝。
就类似于“从源 Object 创建一个新的 Object ,内存地址完全是新的,新 Object 也和源完全一样,不会丢失各种属性”,js 自带的好像没看到类似的方法