JSONデータを逆シリアル化して各オブジェクトのプロトタイプを更新し、共通の機能を継承しようとしています。評価版のデシリアライズ後にJavaScriptのプロトタイプが定義されていません
ただし、次のスクリプトは「people [0] .getFullNameは関数ではありません」というエラーをスローします。デシリアライズされたオブジェクトのプロトタイプは、割り当て後に定義されていないように見えます。
<html>
<head>
<script>
var json = '[ {"firstName": "John", "lastName": "Smith"}, {"firstName": "Nancy", "lastName": "Jones"} ]';
var people;
eval('people = ' + json);
function Person() { }
Person.prototype.getFullName = function() {
return this.firstName + ' ' + this.lastName;
}
//assign prototype
for(var i=0; i < people.length; i++){
people[i].prototype = new Person();
}
if(people[0].getFullName() !== 'John Smith')
alert('Expected fullname to be John Smith but was ' + people[0].getFullName());
</script>
</head>
</html>
CTORのプロパティコピーループは、私がやろうとしているものに対して、最も遅い解決策を提供します。どうも! –