jQuery 引用是如何保存的?

How is a jQuery reference saved?

我正在搞乱 jQuery 和 JavaScript 原型制作,并制作了这个小东西来尝试理解 jQ 对象如何 saved/accessed。

我做了一个 class 有一个 属性

var class1 = function(){
    this.div = $('<div class = "test"/>');
}

然后我做了一些原型方法来操作它,比如改变它的颜色和 html 值。

然后我创建了两个 class 实例,并且能够更改每个实例的单独 DOM 元素。

var myDiv1 = new class1().build().colour('green').colour('red');

var myDiv2 = new class1().build().colour('red').doHTML();

我真的很惊讶地看到每个 class 都保留了对不同 DOM 元素的引用,即使它已经附加到 <body>。我想知道这实际上是如何工作的。是否存在 class 或 jQuery 引用的隐藏 DOM id?它如何知道要操作哪个 DOM 元素?

谢谢。

http://jsfiddle.net/o2uuevgx/3/

jQuery 保留对它的引用。它在您创建元素并在内部存储它时进行引用。

JavaScript 变量通过引用跟踪对象。

因为 DOM 节点是对象,所以对引用 DOM 节点对象的变量的任何更改都会直接对引用的对象进行更改。

一个简单的例子:

// create an object
var x = {foo: "bar"};

// create a "reference" to that object
var ref = x;

// manipulate the reference variable
ref.foo = "hello";

// check the original object
console.log(x.foo);

//=> "hello"

如果 this.div 是对 DOM 节点(由 jQuery 创建)的引用,并且您执行 this.div.css("color", "red"),这没有什么不同;基础(引用)对象将被更改。