1

人。私はオブジェクトのプロパティを勉強しています.1つは情報源に目を引くものです。 JSについてこれを述べた文書全体の一部がありました。Javascriptが継承されたプロパティを削除できないことの明確化。

プロトタイププロパティ JavaScriptオブジェクトはプロトタイプのプロパティを継承します。

deleteキーワードは継承されたプロパティを削除しませんが、プロトタイププロパティを削除すると、プロトタイプから継承したすべてのオブジェクトに影響します。

私はちょっとここで失われています...私はそれが馬鹿に聞こえることは知っていますが、それが再生されるかもしれないプロセスとアプリケーションでは、その意味を正確に理解する必要があります。

答えて

1

deleteは、オブジェクトからプロパティを削除します。オブジェクトのプロパティを継承し、その名前で独自のプロパティを持つのではなく、プロパティでdeleteを呼び出しても何も起こりません。そこにないものは削除できません。 :-)オブジェクトを継承するのではなく、オブジェクトのプロトタイプ(またはそのプロトタイプ、プロトタイプのプロトタイプなど)です。

例が役立つでしょう。考えてみましょう:

// An object to use as a prototype 
 
var p = {answer: 42}; 
 
// An object using `p` as its prototype 
 
var o = Object.create(p); 
 

 
console.log(p.answer);     // 42 
 
console.log(p.hasOwnProperty("answer")); // true 
 
console.log(o.answer);     // 42 
 
console.log(o.hasOwnProperty("answer")); // false

pプロパティを持っている、いないooはそれを継承します。このように:

 
          +−−−−−−−−−−−−−−−+ 
p−−−−−−−−−−−−−−−−−−−−−−+−>| (object) | 
         | +−−−−−−−−−−−−−−−+ 
         | | [[prototype]] |−−−>(Object.prototype) 
         | | answer: 42 | 
    +−−−−−−−−−−−−−−−+ | +−−−−−−−−−−−−−−−+ 
o−−−>| (object) | | 
    +−−−−−−−−−−−−−−−+ | 
    | [[Prototype]] |−+ 
    +−−−−−−−−−−−−−−−+ 

したがってdelete o.answerは効果がありません。 oには、deleteを削除するための属性がありません。answerpanswerのオブジェクトです。我々はpdelete p.answer;)からプロパティを削除した場合

は、それはそれは  — pから削除されます。そしてo(効果的に)それをpを要求し、pはもうそれを持っていないので、プロトタイプの継承は、私たちにundefinedを与えることをやった後answerためoを求め、オブジェクトとそのプロトタイプとのライブ接続であることから:

// An object to use as a prototype 
 
var p = {answer: 42}; 
 
// An object using `p` as its prototype 
 
var o = Object.create(p); 
 

 
console.log(p.answer);     // 42 
 
console.log(p.hasOwnProperty("answer")); // true 
 
console.log(o.answer);     // 42 
 
console.log(o.hasOwnProperty("answer")); // false 
 

 
delete o.answer;       // No effect 
 
console.log(p.answer);     // 42 
 
console.log(o.answer);     // 42 
 

 
delete p.answer;       // Removes it from p 
 
console.log(p.answer);     // undefined 
 
console.log(o.answer);     // undefined
.as-console-wrapper { 
 
    max-height: 100% !important; 
 
}

関連する問題