在学习Java脚本(OOP概念)时,我脑子里有一个理论问题,到目前为止,我已经学习了以下两种方法,我们可以定义对象并初始化它的属性并设置其值,例如:
// 1st method
var obj1 = {
name: "John",
middleName: "XYZ",
lastName: "David",
};
document.write(obj1.name + obj1.middleName + obj1.lastName);
在上述方法中,对象:obj1是使用关键字(var)定义的,该关键字使用用于声明变量,但在这里我们使用它来定义一个对象。现在我知道这个对象是全局的,我可以在函数内部或函数外部的任何位置访问它的属性,但令我担心的是这个对象没有实例可以引用(即我们不能对这个对象使用instanceof关键字),因为我熟悉“Java”语言,其中每个对象都是其类的实例,但在JavaScript中这是一个不同的概念简而言之,我的问题是:上面的对象到底指的是什么,或者即使没有为此对象声明类,该对象是否也会自动初始化?
//2nd method
var obj2 = new Person("David");
function Person(name)
{
document.write(name + " " + "is a person");
}
document.write(" ");
document.write(obj2 instanceof Person);
在第二种方法中,对象:obj2是函数Person()的对象,再次熟悉“Java” 概念我认为 obj2 是 Person 类 的对象,而 Person() 简而言之是 Person 类的构造函数我的问题是:如果没有先声明类,对象如何成为函数的实例?
最佳答案
JavaScript 没有内置类的概念。没有类,只有对象和这些对象之间的链接。这些对象使用“prototype”属性相互链接。当您将 new 与函数名称一起使用时,创建的对象可以是您显式返回的对象,也可以是函数内的“this”(如果您不显式返回)。 详细信息可以访问 You-Dont-Know-JS/this & object prototypes 。 当未使用 new 关键字声明时,您分配给它的对象会自动链接到 Object.prototype。其中包含多个方法,您可以通过委托(delegate)从新创建的对象调用这些方法。您可以使用传入要链接的对象作为第一个参数的 Object.create 方法显式创建链接到另一个对象的对象。如果您不希望新对象链接到任何其他对象,您可以简单地将其创建为 Object.create(null)。还有其他方法可以链接对象,但是最近引入了 Object.create 来简化过程。
关于javascript - 在 Javascript 中,对象根据其声明引用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104158/