0

次の 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() の方法は「より良い」ものです (その理由について専門家に聞いてみたいと思います) and 'lastName。私は JavaScript よりも C ファミリーの構文言語に精通していますが、オブジェクト作成のコンストラクター メソッドの方が「優れている」ように思えます。なぜ私は間違っているのですか?(エンタープライズレベルの環境としましょう)

4

2 に答える 2

1

firstNamelastNameの 2 番目の引数の初期値を に渡すことができますObject.create()

var builder = {
    getFullName : function() {
        return this.firstName + " " + this.lastName;
    }
};

var b1 = Object.create(builder, {
    firstName : { writable:true, configurable:true, value: "Joe" },
    lastName : { writable:true, configurable:true, value: "Shmoe" }
  }
);

b1.getFullName() //prints out: Joe Shmoe

非常に冗長ですが、独自のラッパーを作成できます。

詳細/例はこちら.

于 2013-10-09T18:41:17.860 に答える