背景
首先,我想提一下,用于找出差异的 SO-search
- (宿主对象)DOM-Javascript 对象(
var domJSobj = document.createElement("div")
)和 - (原生对象)纯 Javascript 对象(
var pureJSobj = {}
)
已经完成,但我仍然不能声称我发现了很多(很棒的是,有这个问题答案:what-is-the-difference-between-native-objects-and-host-objects)。也许我在这里忽略了一些东西,然后非常感谢您的评论。
在问这里之前,我还阅读了 MDN Mozillas Docu on DOM and Javascript以获得一些想法。
问题
有点“无胶”,我开始在 Javascript 控制台中玩游戏,我遇到了一些第一个陷阱(源于我对(本机对象)行为的期望,而对于(主机对象)不正确)。要清楚许多事情 - 乍一看 - 似乎相似:
var nativeObject = {}; //创建新对象 nativeObject.someAttribute = "某事"; //设置一些属性 nativeObject.someMethod = function() { return this.someAttribute; } // 定义一些方法 console.log(nativeObject.someAttribute); // “某物” console.log(nativeObject.someMethod()); // “某物” var hostObject = document.createElement("div"); //创建一个“div”一种类型的宿主对象 hostObject.someAttribute = "某事"; //设置一些属性 hostObject.someMethod = function() { return this.someAttribute; } // 定义一些方法 console.log(hostObject.someAttribute); // “某物” console.log(hostObject.someMethod()); // “某物”
对我来说,乍一看似乎(主机对象)与(本机对象)一样可用,并且已经具备更多功能:
console.log(nativeObject.tagName); // 不明确的 console.log(hostObject.tagName); // "DIV"
因为它已经拥有所有不错的 DOM 属性。
我的问题是关于如果我决定(错误)使用(主机对象)而不是简单的(本机对象)可能出现的陷阱(可能的麻烦)列表?
我已经意识到这一点:
- 速度考虑(我假设原生对象创建得更快)
- 内存使用注意事项(本机对象在这里也可能更好)
无论如何,我看不到太多麻烦(如果这些考虑在一个案例中不是很重要)呢?这就是问题的原因。
我认为这个问题的答案最好显示/说明一个潜在的陷阱,即在(本机对象)上使用(主机对象)是不好或不可能的情况或情况。通过这种方式,这个问题应该符合 SO 质量要求,即根据真实事实传递,而不是仅仅引发基于意见的讨论。