JavaScriptのインタビューのトリックや悪魔の詳細にある
2712 ワード
私は多くのインタビューを通過しました、そして、彼らの何人かは質問が非常に簡単であるかもしれないので、本当に疲れていました、しかし、あなたがそれを使ったけれども、それがどのように働くかについて決して考えなかったならば、それは困難をつくることができます.
たとえば、あなたのコードベースでそのような構造をしばしば見ることができます
出力結果は:
あなたが数のそのようなリストを持っていると仮定しましょう
私の過去のインタビューの中で、論理的に答えました
F .プロトタイプとオブジェクトの違いは何ですかトビケラ?
この質問に答えるために、いつ私たちが使うのか尋ねます
ルールとして、関数コンストラクターから新しいオブジェクトを作成したり、クラスから新しいインスタンスを作成する場合にのみ呼び出します.この例を見てみましょう.
オブジェクトProtoRennはさらにどのように作業演算子“新しい”ProtoRadiumはオブジェクトオブジェクトのプロパティです.オブジェクトAから新しいプロパティを使用してオブジェクトBを拡張するときに便利です.
上の例はf .プロトタイプを使用します.また、プロトタイプB .プロトタイプに基づいて、1つの物体の新しいインスタンスを作成するためのメカニズムとして原寸号もある.
本当にです
例:
フォローミーオン🐦 あなたがより多くの内容を見たいならば.
偽の合体演算子
たとえば、あなたのコードベースでそのような構造をしばしば見ることができます
const variable = 0;
const result = variable ?? 100;
console.log(result);
問題はあなたのコンソールで何が出力されるのでしょうか?出力結果は:
0
ダブルクエスチョンマーク演算子??
変数がNULLであるか定義されていない場合には偽です.それ以外の場合はtrueです.デフォルトソート動作
あなたが数のそのようなリストを持っていると仮定しましょう
const arr = [590, 5, 88, 8, 9];
const sortedArr = arr.sort();
console.log(sortedArr);
あなたは、結果値が何に等しいと思いますか?私の過去のインタビューの中で、論理的に答えました
[5, 8, 9, 88, 590]
JavaScriptのソート関数が異なって動作するため、間違って動作します.コールバックハンドラを使用しない場合、既定では配列項目の最初のシンボルに基づいてソートが行われます.したがって、590の最初の文字は5、88の最初の文字は8などです.したがって結果は[5, 590, 8, 88, 9]
.プロトタイプ
F .プロトタイプとオブジェクトの違いは何ですかトビケラ?
この質問に答えるために、いつ私たちが使うのか尋ねます
F.Prototype
?ルールとして、関数コンストラクターから新しいオブジェクトを作成したり、クラスから新しいインスタンスを作成する場合にのみ呼び出します.この例を見てみましょう.
class B {
methodOfClass() {}
}
// Or the same in the traditional way
function myFunctionConstructor() {}
myFunctionConstructor.prototype.methodOfClass = () => {}
用途const bObject = new B();
bObject.methodOfClass();
この構文は、クラスのコンストラクタを使用するまではほぼ同じですが、学習目的では良い例です.const object = Object.create(B.prototype);
それで、フードオペレーター「新しい」の下で見てみましょう、私は私自身の実現演算子「NEW」を準備しましたfunction New(constructor, ...args) {
const obj = Object.create(constructor.prototype);
return constructor.apply(obj, args) || obj;
}
const newObject = New(B);
ここでは、新しいオブジェクトリテラルのプロトタイプを設定し、メソッドによってクラスのコンストラクターを呼び出します.「適用」.したがってF .プロトタイプはオブジェクトの新しいインスタンスを初期化する特別なプロパティです.したがってF .プロトタイプは新しいオブジェクトのプロトタイプです.オブジェクトProtoRennはさらにどのように作業演算子“新しい”ProtoRadiumはオブジェクトオブジェクトのプロパティです.オブジェクトAから新しいプロパティを使用してオブジェクトBを拡張するときに便利です.
上の例はf .プロトタイプを使用します.また、プロトタイプB .プロトタイプに基づいて、1つの物体の新しいインスタンスを作成するためのメカニズムとして原寸号もある.
本当にです
B.prototype === newObject.__proto__
どのようにして、物体の角を得ることができますか?Object.getPrototypeOf(obj);
どのようにオブジェクトの残忍を設定できますか?Object.setPrototypeOf(obj);
そのため、JavaScriptの継承のための基本的な基本機能であり、“new”によってオブジェクトを作成するメカニズムは、この機能にも基づいています.例:
const cat = {
color: 'black'
};
const catBob = {
name: 'Bob'
};
Object.setPrototypeOf(catBob, cat);
console.log(catBob.color);
私は、このロードマップのJavaScriptの学習とインタビューの準備パスをより明確に願っています.この旅であなたの幸運を祈ります!フォローミーオン🐦 あなたがより多くの内容を見たいならば.
Reference
この問題について(JavaScriptのインタビューのトリックや悪魔の詳細にある), 我々は、より多くの情報をここで見つけました https://dev.to/morokhovskyi/javascript-interview-tricks-or-the-devil-is-in-the-details-3ap1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol