0

まず第一に、私は JavaScript初心者であり、Backbone.js の初心者でもあります。

このテクノロジーに慣れるために、いくつかのオンライン チュートリアルに従っています。そして、いくつかのチュートリアルで私はこれを見ました:

Person = Backbone.Model.extend({
    initialize: function(){
        alert("Welcome to this world");
    }
});

var person = new Person;

のものでは、この表記を見つけました:

window.WineView = Backbone.View.extend({
    initialize:function () {
        this.model.bind("change", this.render, this);
    }
});

ビュー名に「ウィンドウ」を追加する必要性は何ですか? オブジェクトが現在のブラウザ ウィンドウを表すと述べているJavaScript ドキュメントを読みましたが、作成したビューをこのオブジェクトの属性として追加するのでしょうか? window作者はなぜそんなことを?

4

2 に答える 2

2

ブラウザ JavaScript では、windowはグローバル オブジェクトです。そのため、スコープ チェーンのどこかに が定義されていwindow.Person === Personない限り( )。Personfunction() { var Person; ... }

言い換えれば、違いはありません。(おまけ7文字使用以外。)

JS scopeを読みたいと思うかもしれません。具体的には、未定義の変数 ( Person = { ... };) に割り当てると、その変数はグローバル オブジェクト ( window) に割り当てられます。ただし、最初に変数 ( ) を宣言var Person = { ... };すると、変数はローカル スコープに割り当てられます。

于 2012-06-08T17:35:37.010 に答える
0

アーキテクチャの問題 (関連付けられたオブジェクトとプロパティをまとめる) は別として、グローバル変数は、定義されていない場合、オブジェクト プロパティとは異なる方法で処理されます。たとえば、上記のコードが実行されておらず、それらのオブジェクトがまだ定義されていないと仮定すると、

Person

未定義のグローバル変数であるため、JavaScript エラーが発生します。が設定されているかどうかを確認する正しい方法Personは、より詳細です

typeof Person !== 'undefined'

一方で、

window.WineView

エラーは発生しませんが、代わりに が返されundefinedます。

于 2012-06-08T17:38:06.577 に答える