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 元素?
谢谢。
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")
,这没有什么不同;基础(引用)对象将被更改。
我正在搞乱 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 元素?
谢谢。
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")
,这没有什么不同;基础(引用)对象将被更改。