3

うまくいくと思われるさまざまな方法を見つけました。

教科書やインターネットで最も推奨されている方法:

var Person = function() {
    this.age = 23;
}
Tony = new Person();

これもうまくいくようです:

function Person() {
    this.age = 23;
}
Tony = new Person();

違いはありますか?追加の質問: 通常、単に括弧を省略することはできません。ここでは可能です(new Personの代わりにnew Person())。これはnewキーワードを使っているからですよね?

私が試した 3 番目の奇妙な方法は次のようになります。

function Person() {
    return {age: 2};
}
Tony = new Person();
Tony = Person(); // both ways work! It seems that you can leave out 'new' here.

ここでは、クラスの名前を持つオブジェクトを取得しませんが、プロパティにもアクセスでき、上記の両方のアプローチに非常に似ているようです。

何を使用する必要があり、技術的な違いは何ですか? ありがとうございました!

4

4 に答える 4

0

これが私のやり方です:

    ;(function (window) {
        "use strict";
        //-- Private Vars
        var opt, obj, rm, Debug;

        //-- construtor
        function App(requestedMethod) {
            //-- set up some vars
            if(typeof requestedMethod !== 'undefined') {
                rm = requestedMethod;
            }
            opt = {
                rMethod: (typeof rm !== 'undefined') ? (rm != null) ? rm : false : false
            }
            //-- containe resulable objects
            obj = {}
            //-- call the init method
            this.init();
        }


        /** Public Methods **/

        /**
         * The Init method called on every page load
         */
        App.prototype.init = function () {
            var om = opt.rMethod;
            //-- Once all init settings are performed call the requested method if required 
            if(om) {(typeof App.prototype[om] == 'function') ? App.prototype[om]() : _DB('Call to Method [' + om + '] does not exsist.');}
        };

        /**
         * testmethod
         */
        App.prototype.testmethod = function () {



        };


        /** Private Methods **/

        function PrivateMethod(){

        }
        /**
         *  A console output that should enable to remain enable js to work in IE
         *  just incase i forget to remove it when checking on those pesky IE browsers....
         */
        function _DB(msg){
            if(window.console && window.console.log){
                var logDate = new Date();
                window.console.log('------------------- ' + logDate + ' ----------------------------------');
                window.console.log(msg);
            }
        };


        window.App = App;

    })(window);

次に、次のように呼び出します。

    <script src="ptha/to/your/app.js"></script>
    <script>$(function() { new App('testmethod'); });</script>

コードが読み込まれると、すべてのページ読み込みデータが完了すると、新しい App() が実行されます

これが役立つことを願っています。外部にアクセスするには、新しい変数を var に追加します

 var App = new App('testmethod);

次に、次のようなものにアクセスできます

    App.testmethod()...
于 2013-11-08T09:49:05.987 に答える
-1
var Person = function() {
    this.age = 23;
}

Person は無名関数を含む (参照される) 変数です

function Person() {
    this.age = 23;
}

しかし、ここでは「Person」という関数を宣言します

function Person() {
    return {age: 2};
}

したがって、新しい静的オブジェクトを返す関数を宣言します。

クラスを宣言する場合は 2 番目を使用し、モジュールを作成する場合は 3 番目を使用します。最初の方法については、こちらをご覧ください: http://helephant.com/2008/08/23/javascript-anonymous-functions/

于 2013-11-08T09:44:02.360 に答える