我正在搞乱jQuery和JavaScript原型设计,并尝试了解如何保存/访问jQ对象。
我创建了一个具有单个属性的类
var class1 = function(){
this.div = $('<div class = "test"/>');
}
然后我制作了一些原型方法来操作它,比如改变它的颜色和html值。
然后我创建了该类的两个实例,并且能够改变每个实例的单个DOM元素。
var myDiv1 = new class1().build().colour('green').colour('red');
var myDiv2 = new class1().build().colour('red').doHTML();
我很惊讶地看到每个类都维护了对不同DOM元素的引用,即使它已经附加到<body>
。我想知道这是如何实际工作的。是否存在类或jQuery保持引用的隐藏DOM ID?它如何知道要操作哪个DOM元素?
谢谢。
答案 0 :(得分:1)
jQuery保留对它的引用。它在您创建元素并在内部存储时进行引用。
答案 1 :(得分:1)
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")
,则没有什么不同;底层(引用)对象将被更改。