プロトタイプオブジェクトの属性と__proto__にObject.create影響()

以下は、ロジック、接辞プロジェクトの変更かどうかを判断するための情報のいくつかの詳細は以下のとおりです。

clipboard.png

そこで問題は、あなたのすべての画像が変更されたかどうかを判断するために脳を作る方法、です。

A、Object.create古典的な面について、次の二つの質問を参照してください()の

質問1

var a = { name: 'kelen' };
var b = Object.create(a);
b.name = 'boke';
console.log(a.name);  

問題2

var a = { person : { name: 'kelen' } };
var b = Object.create(a);
b.person.name = 'kobe';
console.log( a.person.name ); 

考えます

なぜobj2の最初の修正のname属性、名前OBJ1の出力は、第2の1ながら、1ですが、あなたはそれを変更できますか?

第二には、説明:Object.create機能を

指定されたプロトタイプと指定されたプロパティの数を持つオブジェクトを作成するObject.create()メソッド。

文法

Object.create(プロト、[propertiesObject])

パラメータ

proto

新しいオブジェクトのプロトタイプとして作成されたオブジェクト。

propertiesObject

オプション。パラメータオブジェクトは、属性と値のセットで、オブジェクトのオブジェクト名のプロパティの属性名が新たに作成され、プロパティ記述子の値(Object.defineProperties二番目のパラメータの構造記述子とこれらの属性())。 。注:このパラメータオブジェクトは、未定義することができない、オブジェクト属性のプロトタイプチェーンに言うことです、それ自体が有効であることが持っているオブジェクトの唯一の他の列挙のプロパティは無効です。

抛出异常

プロト引数がnull値またはオブジェクトでない場合、TypeError例外を投げます

返却値

指定された内部プロトタイプを持つ、新しいオブジェクトの指定された属性(もしあれば)が含まれています。

第三に、詳細なタイトル

Object.prototypeプロパティは、オブジェクトのプロトタイプオブジェクトオブジェクトを示します。

__proto__プロパティは、オブジェクトを表しObjectプロトタイプを、プロトタイプは、値のオブジェクトがあってもよいことができnull、例えば、Object.prototype.__proto__それはnull

clipboard.png

上記の例では、VaRのB = Object.create()から分析;時間は、実際に、= Bと等しくありません

b.__proto__ ==> a; 

b.prototype ==> a.prototype;

私たちの場合はb.name = "kobe"、時間は実際にはオブジェクトBで新しいプロパティ、および割り当てですが、b.name = "kobe"印刷する前にconsole.log(b.name);、出力時間を"kelen"プロトタイプチェーン内のnameプロパティを見つけることので、あなたがの値を取得することができますので、

そこで、以下ではb.name = "kobe"、あなたが最終値a.name神戸を達成したい場合、あなたはこのように書くことができ、プロパティの名前を変更しませんb.__proto__.name = "kobe"

第二ケースながら、

b.person.name = "kobe"、b.personはb.person.name割り当て、実際には、a.person.nameに変形することがa.personオブジェクト参照であるので簡単に与える、値a.person.nameを変更することができ参照のタイプの例

var a = { name: "kelen" };
var b = a;
b.name = "kobe";
console.log(a.name); // kobe

第四に、詳細なプロジェクトの問題

質問1

var a = { name: 'kelen' };
var b = Object.create(a);
b.name = 'boke';
console.log(a.name);  // kelen

問題2

var a = { person : { name: 'kelen' } };
var b = Object.create(a);
b.person.name = 'kobe';
console.log( a.person.name ); // kobe
  

商品コード

//原始接口拿到的福利信息, //图片列表对象
originInfo={
    welfareName:'中影国际',
    imageList:[
        {
            id:'5157',
            wIFImgUrl:'http://tcw-wsq.b0.upaiyun.com/2016/07/12/34/20160713165313449.jpg'
        },
        {
            id:'5158',
            wIFImgUrl:'http://tcw-wsq.b0.upaiyun.com/2016/07/14/34/20160732112832397.jpg'
        }
    ]
};

//$scope.welfareInfo=originInfo;  //no,完全行不通
//$scope.welfareInfo=Object.create(originInfo); //no,不可以
var originInfoCy=JSON.stringify(originInfo);  //stringify用于从一个对象解析出字符串
$scope.welfareInfo=JSON.parse(originInfoCy);  //parse 用于从一个字符串中解析出json 对象

この問題に対する正しいアプローチはoriginInfoのである文字列に遷移オブジェクト、文字列は参照型ではない、及びそのオブジェクトに変換し、それが問題ララに完璧なソリューションです。

:この記事はで再現されたAPE→2048 https://www.mk2048.com/blog/blog.php?id=hhkk1kbbj2j

おすすめ

転載: www.cnblogs.com/baimeishaoxia/p/12625833.html