gpt4 book ai didi

javascript - 为什么更喜欢 defaults() 而不是 Javascript 原型(prototype)设计?

转载 作者:行者123 更新时间:2023-11-30 08:06:08 25 4
gpt4 key购买 nike

借助 Underscore.js,我们可以使用 defaults()将默认值应用于对象。

var defaultProperties = { flavor : "vanilla", sprinkles : "lots" };
var iceCream = {flavor : "chocolate"};
_.defaults(iceCream, defaultProperties);

但在 Javascript 中,默认值也可以通过使用原型(prototype)来实现。

var defaultProperties = { flavor : "vanilla", sprinkles : "lots" };
var iceCream = Object.create(defaultProperties);
iceCream.flavor = "chocolate";

Underscore.js 的 defaults() 有什么优势和用例?

最佳答案

  1. 主要是可用性。

    Object.create()ES5-compatible browsers 中可用,而 _.defaults() 将在旧的、基于 ES3 的浏览器(IE8、IE7 等)中运行。

  2. 也适用于您未create() 的对象。

    如果对象已经存在,你不能指望能够在事后改变它的[[Prototype]]来建立期望的继承。

    在某些浏览器中是可能的,但是 not standard .

  3. 使用 1 个以上的 defaults 对象可能会使事情变得更容易。

    _.defaults(options, config, defaults);

    这可以通过原型(prototype)链实现,但您必须建立一个。

    var defaults = { /* ... */ };

    var config = Object.create(defaults);
    config.mixed = true;
    var iceCream = Object.create(config);
    iceCream.flavor = 'chocolate';

但是,总的来说,它们的用途非常相似。他们只是从不同的 Angular 这样做:

  • _.default() 迭代以查找并设置缺少的内容。
  • Object.create() 使用原型(prototype)链来继承缺失的部分。

因此,使用哪种在很大程度上取决于您和您的个人喜好。

关于javascript - 为什么更喜欢 defaults() 而不是 Javascript 原型(prototype)设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010898/

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