nextSibling
不返回新元素,它返回一个现有元素,它是目标元素的下一个兄弟元素。
您可以将对象引用存储为另一个对象的属性,就像您可以存储原始值一样。
function SomeObject(obj) {
this.obj = obj;
}
var someObject = new SomeObject(new SomeObject());
someObject.obj instanceof SomeObject //true
但是,如果您想SomeObject
在访问时动态创建一个新实例,someObject.obj
或者您想根据每次访问属性时都应重新评估的条件返回现有对象,则需要使用函数或访问器。
function SomeObject(obj) {
this.obj = obj;
}
SomeObject.prototype.clone = function () {
//using this.constructor is a DRY way of accessing the current object constructor
//instead of writing new SomeObject(...)
return new this.constructor(this.obj);
};
var someObject = new SomeObject(new SomeObject());
var someObjectClone = someObject.clone();
最后使用访问器(请注意,它们不是跨浏览器且无法填充)
function SequentialObj(num) {
this.num = num;
}
Object.defineProperty(SequentialObj.prototype, 'next', {
get: function () {
return new this.constructor(this.num + 1);
},
configurable: false
});
var seq = new SequentialObj(0);
console.log(seq.next); //SequentialObj {num: 1}
console.log(seq.next.next.next); //SequentialObj {num: 3}