Javascript 循环引用的示例

Javascript 循环引用的示例

循环引用是指一个对象直接或间接地引用自身,从而创建了一个闭环。像其他编程语言一样,javascript也面临着循环引用的问题。在本文中,我们将介绍javascript中不同循环引用模式的几个示例。

直接循环引用

在直接循环引用中,对象使用self指针指向自身。在这个示例中,我们可以无限扩展user对象(实际上有一定的限制),并且所有对象都指向同一个对象。让我们看一下下面的代码和输出的控制台结果,以便更好地理解。

示例

var user = {
   first_name: 'Suman'
};

user.self = user;

console.log("The user:", user);
console.log("The user using self pointer:", user.self);
console.log("The user using double self pointer:", user.self.self);

间接循环引用

这是前一个案例的扩展。在此示例中,用户由details对象的user属性指向。这是一种间接引用,但用户本身也指向自己,从而形成了循环状态。

示例

var user = {
   first_name: 'Suman'
};

user.self = user

var details = {
   user: user,
   user_id: 'u01'
};
console.log(details);

类和对象类型

在本节中,有两个示例,一个使用类,另一个通过从函数创建的对象。在两种情况下,都存在循环引用,我们可以使用一系列对象的自指针来检查这一点。

示例(使用类)

class Person {
   constructor( name ) {
      this.name = name;
      this.self = this;
   }
}
var person = new Person( 'Asim' );
console.log( "Name of the person from multiple self pointers:",
person.self.self.self.self.name );

示例(使用函数中的对象)

function Person( name ) {
   this.name = name;
   this.self = this;
}

var person = new Person( 'Asim' );
console.log( "Name of the person from multiple self pointers:",
person.self.self.self.self.name );

闭包

正在创建一个闭包对象,当给定一个参数时,它简单地打印该参数,否则通过传递错误消息调用相同的对象。因此,闭包正起作用。以下代码展示了这一现象。

示例

var myObject;
myObject = function( arg ) {
   if ( arg )
      console.log( arg );
   else
      myObject( 'please provide an argument' );
   }
myObject( 'Any string or value' );
myObject();

结论

循环引用是用来描述一个对象指向自身的情况。这种循环引用可以是直接或间接的。当一段代码需要另一段代码的输出,而被引用的代码又需要原始代码的输出时,这被称为循环引用,它可能出现在生产程序中。这可能使应用程序无法使用,因为它们都无法提供任何相关数据,或者可能引入微小且难以察觉的内存泄漏问题,尤其是在早期的JavaScript引擎中。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程