javascript - 在 Javascript 中,对象根据其声明引用什么?

标签 javascript

在学习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/

相关文章:

javascript - 如何在 react 传单上添加比例?

php - 为什么这个 javascript/jQuery JSON 解析代码不起作用?

javascript - 如何在我的游戏中加载上一关而不是下一关?

javascript - JADE 和 ng 类

Javascript:新图像未出现在 Firefox 和 IE 中

javascript - 反转字符串

javascript - 在 XML 文件中搜索

javascript - 获取 $.ajax jquery 成功后返回的数据

javascript - Appending Child 会在 JavaScript 上重置之前附加的元素值

javascript - 这个叫什么名字?