ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript での Object.create() の使用法の概要

JavaScript での Object.create() の使用法の概要

不言
不言転載
2018-12-10 17:45:423448ブラウズ

この記事では、JavaScript での Object.create() の使用法を紹介します。必要な方は参考にしていただければ幸いです。ヘルプ。

Object.create(null) によって作成されたオブジェクトは空のオブジェクトであり、オブジェクトは Object.prototype プロトタイプ チェーンのプロパティやメソッドを継承しません。

例: toString() 、hasOwnProperty( ) およびその他のメソッド

#propertiesObject (オプション) は、新しく作成されたオブジェクトを初期化するために使用されるオブジェクトでもあります
Parameters Description
obj 継承されるオブジェクトを示すオブジェクトのプロトタイプを作成します。
基礎となる実装を見てみましょう

    Object.create =  function (o) {
        var F = function () {};
        F.prototype = o;
        return new F();
    };
特定のアプリケーションを見てみましょう:

    //创建一个Obj对象
    var Obj ={
        name:'mini',
        age:3,
        show:function () {
            console.log(this.name +" is " +this.age);
        }
    }

    //MyObj 继承obj, prototype指向Obj
    var MyObj = Object.create(Obj,{
        like:{
            value:"fish",        // 初始化赋值
            writable:true,       // 是否是可改写的
            configurable:true,   // 是否能够删除,是否能够被修改
            enumerable:true      //是否可以用for in 进行枚举
        },
        hate:{
            configurable:true,
            get:function () { console.log(111);  return "mouse" }, // get对象hate属性时触发的方法
            set:function (value) {                                 // set对象hate属性时触发的方法 
                console.log(value,2222);
                return value;
            }    
        }
    });
焦点: get メソッドと set メソッドここにはより大きな可能性が秘められているようです。これらを使用して、データ フィルタリングとデータ バインディングを実装できます。いくつかの簡単な mvvm 効果を実現するObject.create 継承の適用:

    var A = function () { };
    A.prototype.sayName=function () {
        console.log('a');
    }

    // B的实例继承了A的属性
    var B = function () { };
    B.prototype = Object.create(A.prototype);
    var b = new B();
    b.sayName();  // a
キー ポイント: コンストラクターの継承と比較して、Object.create 継承は A と B のプロトタイプの完全な分離を実現します。双方が互いに影響を与えることはありません。これが Object.create

のハイライトです。

以上がJavaScript での Object.create() の使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。