我正在做一个简单的JS树库,所以我可以动态地创建分层数据的标记。为什么我的构造函数的“this”变量保持私有?
问:为什么“var that = this;”当我使用Tree构造函数返回一个新的对象实例时,保持私有状态?我很高兴“这个”是私人的,但我不知道为什么它是私密的。思考?
function Tree(data, containerId) {
var that = this; // Private variable. Not returned by constructor, because... ???
this.data = data;
this.container = document.getElementById(containerId);
this.selectedNodeId = null;
this.container.addEventListener('click', function (e) {
that.selectedNodeId = e.target.getAttribute('id');
console.log(that.selectedNodeId);
});
}
我建议阅读关闭。 ---为什么使用'that'而不是'this'? – evolutionxbox
简短的答案关闭。长的答案关闭。 – Darkrum
您是否使用过'new'运算符的构造函数,例如:'new Tree()' – Slim