gpt4 book ai didi

javascript 函数 this 和原型(prototype)

转载 作者:行者123 更新时间:2023-11-28 13:12:36 24 4
gpt4 key购买 nike

代码如下:

function A() {
this.name = "kl";
this.obj2 = { a: 1 };
}

A.prototype.city = "china";
A.prototype.obj = {age: 30};

var a = new A();
var b = new A();

a.name = "kobe";
a.obj.age = 20;
a.city = "American"
a.obj2.a = 30;

console.log(b.name); // k1
console.log(b.city); // why china ?

console.log(b.obj); // when b.city = china, why b.obj = {age: 20}
console.log(b.obj2); // {a: 1}

我的观点是a和b都有自己的this,所以你怎么编辑this[property]都不能改变b自己的this.value;

属性(property)申报是否共享属性(property)?是对的 ?但是当obj改变时会影响b.obj,什么时候城市变化不会影响b.city?

最佳答案

两个对象的原型(prototype)链中都有cityobj。但是,如果您执行 a.city = "American",您将a 本身上创建一个新属性 city ,在属性链中隐藏属性 city
分配给属性(几乎)总是会在对象本身上创建该属性。

a.obj.age = 20; 但是读取(而不是赋值!)a.obj 引用的对象并更新其年龄属性。 ab 具有相同的原型(prototype),因此 a.objb.obj 解析为相同的对象。如果对象以任何方式发生变异,它都会以相同的方式影响 ab

Chrome 控制台的结构:

enter image description here

关于javascript 函数 this 和原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com