javascript - 设置使用 Object.create() 创建的 JavaScript 对象的属性

标签 javascript

假设有一个使用以下 JavaScript 创建的简单对象

 Builder = function (firstName, lastName) {
                this.firstName = firstName;
                this.lastName = lastName;
            }
            Builder.prototype.build = function () {
                return 'building....';
            };
            var b2 = new Builder('firstName', 'lastName');

我一直在阅读道格拉斯·克罗克福德 (Douglas Crockford) 的一些作品,他说这“更好” 创建如下对象:

 var builder = {
                build: function () {
                    return 'building...';

                }, firstName: 'firstName'
                , lastName: 'lastName'
            };
            var b1 = Object.create(builder);

Object.create() 方法“更好”(我很想听听专家的说法),但我不知道如何轻松地将参数传递给第二个版本的值'名字和'姓氏。我对 C 系列语法语言比 JavaScript 更熟悉,但在我看来,对象创建的构造函数方法“更好”。为什么我错了? (假设是企业级环境)

最佳答案

按照 Crockford 的方式,您需要执行以下操作:

  var build = function(firstName, lastName) {
    // do private stuff here.. but this closure will still be accessible to the returned object
    return {
      firstName:firstName,
      lastName:lastName
    }
  }<p></p>

<p>var b = build('john', 'smith')
</p>

它和面向对象的方式一样干净/强大

Crockford 的论点是面向对象与典型的继承不能很好地融合。他觉得好像许多面向对象的结构都被添加到了语言中,并且在这样做之前应该更清楚地考虑清楚。在我自己的代码中,我总是尝试遵循他的合理建议,因为他来自前线:)

关于javascript - 设置使用 Object.create() 创建的 JavaScript 对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19279746/

相关文章:

javascript - jQuery:验证多个电子邮件

javascript - 来自 IFrame Javascript 的链接的 URL

javascript - 如何在 JS 中将矩形设置为对象进行数组?

javascript - 当url改变时加载ajax

javascript - 生成器在等待 promise 解决时返回未定义的值

javascript - 在 Nodejs 中导出对象时,值未定义

javascript - 在提交表单上显示模式,然后按提交表单

javascript - TinyMce 格式化问题

javascript - 如何从我的网站禁用(查看源代码)和(Ctrl + C)

javascript - 点系统 - localStorage