gpt4 book ai didi

javascript - 原型(prototype)属性如何在内存中工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:04 25 4
gpt4 key购买 nike

如果原型(prototype)在所有实例之间共享,原型(prototype)属性如何工作?

function Foo() { 

}

Foo.prototype.property = 1;

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

a.property = 50;

console.log(b.property) // why this line shows 1?

如果不共享,内存中的原型(prototype)属性和构造函数属性有什么区别?

function Foo() { 

}

Foo.prototype.property = 1;

对比

function Foo() {
this.property = 1;
}

补充疑惑:

  • 这两种不同的方式在内存中是如何工作的?
  • 哪个使用更多内存,为什么?
  • 当我在原型(prototype)中创建一个方法时,它在所有实例之间共享对我来说很有意义,我认为我只会在内存中加载一个方法,但我无法理解属性的工作原理。

最佳答案

function Foo() { 

}

// Hey, everybody, if anyone asks you about 'property'
// unless you have your own, use this one.
Foo.prototype.property = 1;

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

// Hey, you! You're special. You get your own property.
// This one covers the shared one.
a.property = 50;

// Hey you, B! You're using the shared one.
console.log(b.property) // why this line shows 1?

这是“原型(prototype)”和本地属性之间的基本区别。

如果在一个对象上,你请求一个对象没有的属性,它会运行到它的父对象并询问“嘿!我可以使用你的吗?”这一切都回到了根对象。

为了获得真正的乐趣,并且是让您的同事讨厌您的可靠方法,请设置:

Object.prototype.something = true;

我将随处可用并破坏各种东西。


// Everyone share this copy of property
function Foo() {

}

Foo.prototype.property = 1;


// Hey everybody! You get your OWN copy of property! Ain't you special.
function Foo() {
this.property = 1;
}

关于javascript - 原型(prototype)属性如何在内存中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25335870/

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