JavaScript は new を使用せずにオブジェクトを作成できますか?

青灯夜游
リリース: 2023-01-06 11:18:12
オリジナル
3375 人が閲覧しました

Javascript では、new 演算子を使用せずにオブジェクトを作成できます。方法: 1. 「var objectName={属性名 1: 値 1, 属性名 2: 値 2,...};」ステートメントを使用します。2 、「Object.create (プロトタイプ オブジェクト、記述子)」ステートメントを使用します。

JavaScript は new を使用せずにオブジェクトを作成できますか?

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript はオブジェクトの作成に新しいメソッドを使用しません

オブジェクトの直接数量

直接数量を使用する オブジェクトは迅速に作成でき、最も効率的で簡単な方法です。具体的な使用法は次のとおりです:

var objectName = {
    属性名1 : 属性值1,
    属性名2 : 属性值2,
    ...
    属性名n : 属性值n
};
ログイン後にコピー

オブジェクト リテラルでは、属性名と属性値はコロンで区切られます。属性値には任意のタイプのデータを指定でき、属性名には JavaScript 識別子または文字列型の式。プロパティはカンマで区切られ、最後のプロパティの末尾にカンマは必要ありません。

例 1

次のコードでは、オブジェクト リテラルを使用して 2 つのオブジェクトを定義します。

var o = {  //对象直接量
    a : 1,  //定义属性
    b : true  //定义属性
}
var o1 = {  //对象直接量
    "a" : 1,  //定义属性
    "b" : true  //定义属性
}
ログイン後にコピー

例 2

属性値には、任意のタイプの値を指定できます。プロパティ値が関数の場合、プロパティはメソッドとも呼ばれます。

var o = {  //对象直接量
    a : function () {  //定义方法
        return 1;
    }
}
ログイン後にコピー

例 3

属性値がオブジェクトの場合、入れ子構造オブジェクトを設計できます。

var o = {  //对象直接量
    a : {  //嵌套对象
        b : 1
    }
}
ログイン後にコピー

例 4

プロパティが含まれていない場合は、空のオブジェクトを定義できます。

var o = {}  //定义一个空对象直接量
ログイン後にコピー

Object.create を使用する

Object.create は ECMAScript 5 の新しい静的メソッドで、インスタンス オブジェクトの作成に使用されます。このメソッドでは、オブジェクトのプロトタイプとオブジェクトのプロパティを指定できます。具体的な使用法は次のとおりです。

Object.create(prototype, descriptors)
ログイン後にコピー

パラメータの説明は次のとおりです。

  • prototype: 必須パラメータ。プロトタイプ オブジェクトを指定します。null にすることもできます。

  • descriptors: オプションのパラメーター。1 つ以上のプロパティ記述子を含む JavaScript オブジェクト。プロパティ記述子にはデータ プロパティとアクセサー プロパティが含まれます。データ プロパティについては以下で説明します。

  • value: 属性値を指定します。

  • writable: デフォルトは false で、属性値が書き込み可能かどうかを設定します。

  • enumerable: デフォルトは false で、プロパティが列挙可能 (for/in) かどうかを設定します。

  • 構成可能: デフォルトは false で、属性の特性を変更したり、属性を削除したりできるかどうかを設定します。

アクセサ属性には 2 つのメソッドが含まれており、簡単に説明すると次のとおりです。

  • set(): 属性値を設定します。

  • get(): 属性値を返します。

例 1

次の例では、Object.create を使用してオブジェクトを定義し、null を継承し、2 つの列挙可能なプロパティ (サイズと形状) を含みます。 . の属性値はそれぞれ「large」と「round」です。

var newObj = Object.create (null, {
    size : {  //属性名
        value : "large",  //属性值
        enumerable : true  //可以枚举
    },
    shape : {  //属性名
        value : "round",  //属性值
        enumerable : true  //可以枚举
    }
});
console.log(newObj.size);  //large
console.log(newObj.shape);  //round
console.log(Object.getPrototypeOf(newObj));  //null
ログイン後にコピー

例 2

次の例では、Object.create を使用して、オブジェクト リテラルと同じプロトタイプを持つオブジェクトを定義します。

var obj = Object.create(Object.prototype, {  //继承Obj.prototype原型对象
    x : {
        value : undefined,  //属性值
        writable : true,  //可写
        configurable : true,  //可以配置
        enumerable : true  //可以枚举
    }
});
console.log("obj.prototype = " + Object.getPrototypeOf(obj));  //"obj.prototype =[object, Object]"
Object.getPrototypeOf() 函数可获取原始对象的原型。如果要获取对象的属性描述符,可以使用 Object.getOwnPropertyDescriptor() 函数。
ログイン後にコピー

例 3

次の例では、アクセサー プロパティ b を使用してデータ プロパティ a を読み書きするオブジェクトを定義します。

var obj = Object.create(Object.prototype, {
    a : {  //数据属性a
        writable : true,
        value : "a"
    },
    b : {  //访问器属性b
        get : function () {
            return this.a;
        },
        set : function (value) {
            this.a = value;
        },
    }
});
console.log(obj.a);  //"a"
console.log(obj.b);  //"a"
obj.b = 20;
console.log(obj.b);  //20
ログイン後にコピー

【関連する推奨事項: JavaScript 学習チュートリアル

以上がJavaScript は new を使用せずにオブジェクトを作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート