javascript - 是否可以使用对象的 ID 运行对象方法?

标签 javascript object methods

具有对象构造函数创建的方法的对象:

 function objectexample(name) {
        this.name = name;

    this.create = function(){
    var obj = document.createElement('div');
    obj.id = this.name;
    parent = document.getElementsByTagName("body")[0];
    parent.appendChild(obj);
    }

     this.showalert = function(){
     alert("alert"); 
    }

    }

现在我创建对象:

var obj1 = new objectexample("new1");

如何为此对象运行方法 .create,但不使用变量 obj1,我想使用 ID 获取对象,例如:

 document.getElementById("new1").showalert();

这可能吗?

最佳答案

基本上,是的,这是可能的

但是,您需要该元素包含对创建它的对象的引用。

在下面的演示中:

  • 在构造new obj1时,我们定义了3个属性:
    1. 它的名称
    2. 一个 create() 方法,当被调用时会创建一个元素。
    3. 一个 showAlert() 方法,调用时会输出一些数据。
  • 在调用 create() 之前调用 showAlert() 时,我们会得到有关该对象的所有可用数据,但不会得到有关尚未创建的元素的任何数据。
  • 当调用 create() 时,我们创建元素,并将 creation 定义为对象的属性,元素作为其值。
  • 然后我们将 creator 定义为元素的属性,其值为 this(创建元素的对象)。
  • 现在对象 (creator) 有一个名为 creation 的子元素,该元素有一个 creator 及其所有属性,包括它的方法。

换句话说,如果 new 对象产生了一个元素,该元素将采用其创建者的属性,并且创建者会紧紧握住它的 child 的手。

function ObjectExample( name ) {
  this.name = name;

  this.create = function() {
    this.creation = document.createElement( "div" );
    this.creation.id = name;
    this.creation.creator = this;
    document.body.appendChild( this.creation );
  }

  this.showAlert = function() {
    // alert( "Alert!" ); // simpler for demo to use console
    console.log( this.name );
    console.log( this.creation );
    return this.creation;
  }
}

let obj1 = new ObjectExample( "new1" );

if ( !obj1.showAlert() ) {
  obj1.create();
}

document.getElementById( "new1" ).creator.showAlert();

关于javascript - 是否可以使用对象的 ID 运行对象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438831/

相关文章:

ruby - 如何调用名称以给定字符串开头的类的所有实例方法?

javascript - Angular 2 : Trying to change a label from the onclick function of clicking a button next to an input form

javascript - 如何解决这个最小的 js 代码问题?

c++ - 方法局部结构是否需要执行默认构造函数

javascript - 仅在定义值时才内联设置 JS 对象的属性

javascript - 为什么我可以将命名属性添加到数组中,就好像它是一个对象一样?

objective-c - float dashPattern[] = {10, 5};

javascript - 边距和填充导致计算布局问题

javascript - Angular : $watch set in a loop

javascript - 如何拦截和修改任何对象的特定属性