如何在 JavaScript 中创建实例变量

How to create instance variables in JavaScript?

本文关键字:创建 实例 变量 JavaScript      更新时间:2023-09-26

我的理解是,原型链上的东西每个对象只创建一次,要创建实例变量,必须使用this。 这是对的吗?

例如:

function Foo () {
    this.some_instance = "hello";
}
Foo.prototype.some_static = "hi";

实现

var foo1 = new Foo();
var foo2 = new Foo(); 
创建

foo1 和 foo2 将创建两个 hello 值,但只创建 hi 中的一个值。

这是对的吗?

简短的回答:是的。

证明:

function Foo () {
    this.some_instance = "hello";
}
var foo1 = new Foo();
Foo.prototype.some_static = "hi"; // in between
var foo2 = new Foo();
foo1.some_static === foo2.some_static; // return true

好吧,制作 foo1 和 foo2 不会创建任何"hi"值。值为"hi"的"some_static"变量在创建 foo1 和 foo2 之前已在 Foo 原型对象中创建。

当您创建使用 Foo 原型的对象并引用它们的"some_static"属性时,它将首先查找对象本身。如果对象没有"some_static"属性,它将在其原型对象中查找它。

但是,是的,如果要创建对使用相同原型的每个对象唯一的属性,则应将其设置在对象本身而不是原型上。您可以通过从对象的一个方法内部设置"this.some_instance"或从外部设置"foo1.some_instance"来做到这一点。