この記事では主に、jsコンストラクターで作成されたオブジェクトに新規が追加されるか追加されない問題について詳細に分析します。この点に興味がある場合は、参照してください。
今日この質問を見ました:
次のコードが a.name = "name1"; b.name = "name2";をサポートするように、「TO DO」に内容を入力してください。
function Obj(name){ // TO DO } obj. /* TO DO */ = "name2"; var a = Obj("name1"); var b = new Obj;
質問 1:新しいオペレーターは何をしますか?
新しいオブジェクトを作成します。
コンストラクターのスコープを新しいオブジェクトに割り当てます。
コンストラクター内のコードを実行します(この新しいオブジェクトに属性を追加します)。新しいオブジェクト。
質問 2: new 演算子を使用せずにコンストラクターが直接実行された場合はどうなりますか?function Obj(name){
this.name = name;
console.log(this); // 严格模式下是undefined 非严格模式下是window对象
}
var a = Obj("name1");
console.log(a); // 结果 => undefined
2 つの違いの概要
new 演算子を使用してオブジェクトを作成すると、コンストラクターは値を返さないか、基本データ型を返し、次の例のようにオブジェクトを返します。コンストラクターは参照型を返します:
function Obj(name){ this.name = name; } var b = new Obj; console.log(b); // Obj { name: undefined } function Obj(name){ this.name = name; return 'chic'; } var b = new Obj; console.log(b); // 同上
概要
new を追加せずにコンストラクターを実行する場合、戻り値が基本データ型の場合、戻り値は new キーワードを使用してコンストラクターを実行した場合のコンストラクターの実行結果になります。の場合、戻り値は無視され、参照型が返された場合は、その参照型が返されます。
それで、質問に対する答えはありますか?
参考回答:
function Obj(name){ this.name = name; return {}; } var b = new Obj; console.log(b); // {}
上記は皆さんのためにまとめたもので、今後皆さんのお役に立てれば幸いです。
関連記事:
WeChat アプレットに画像プレビュー機能を実装する方法jquery.picsign で画像注釈コンポーネントを使用する方法
webpack を介して koa2 フレームワーク アプリをパッケージ化する方法、何をすべきか私はします?
以上がjsでオブジェクトを作成することについてですが、新規に追加した方が良いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。