gpt4 book ai didi

javascript - 使用 Object.create 的优势

转载 作者:可可西里 更新时间:2023-11-01 02:41:31 25 4
gpt4 key购买 nike

类似于但不同于this question .以下代码来自JavaScript: The Definitive Guide .他基本上是在定义一个继承方法,如果它存在则服从 Object.create,否则使用构造函数和交换原型(prototype)进行普通的旧 Javascript 继承。

我的问题是,既然 Object.create 在 许多常见浏览器 IE 上不存在,那么尝试使用它有什么意义呢?它肯定会使代码困惑,上一个问题的评论者之一提到 Object.create isn't too fast .

那么尝试添加额外代码以便偶尔使用这个 ECMA 5 函数有什么好处,它可能会或可能不会比执行此操作的“旧”方法慢?

function inherit(p) {
if (Object.create) // If Object.create() is defined...
return Object.create(p); // then just use it.

function f() {}; // Define a dummy constructor function.
f.prototype = p; // Set its prototype property to p.
return new f(); // Use f() to create an "heir" of p.
}

最佳答案

速度差异不是很明显,因为本质上你可能不会创建太多对象(数百,甚至数千不是我所说的很多),如果你是并且速度是一个关键问题你可能不会用 JS 编码,如果以上两种情况都不是真的,那么我敢肯定,在所有流行的 JS 引擎的几个版本中,差异可以忽略不计(在某些情况下已经如此)。

在回答您的问题时,原因与速度无关,而是因为 Object.create设计模式优于旧方法(对于该答案和其他答案中概述的原因)。它们允许正确使用 ES5 属性(这使得对象更具可扩展性,因此应用程序的可扩展性更高),并且可以帮助继承层次结构。

这是正向工程。如果我们采取“好吧,它并没有在所有地方实现,所以我们不要弄湿我们的脚”这样的话,事情就会进展得很慢。相反,早期和雄心勃勃的采用有助于行业向前发展,帮助业务决策者支持新技术,帮助开发人员改进和完善新想法和支持框架。我提倡尽早(但预防性且仍然向后兼容)采用,因为经验表明,等待足够多的人支持一项技术可能会让您等待太久。愿 IE6 成为那些不这么想的人的一个教训。

关于javascript - 使用 Object.create 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com