多种对象定义方式

/**
 * 对象定义
 * @authors Your Name (you@example.org)
 * @date    2019-08-18 15:10:38
 * @version $Id$
 */

var print0 = (function() {
    var test = {};
    test.test0 = function() {
        console.log('test0')
        console.log(this)
    }
    return test
})() //{}对象不用new

var print = {
    test: function() {
        return 'fucntion1'
    },
    console: function() {
        console.log('test1')
        console.log(this)
    }
} //{}对象,不用new

var print2 = (function() {
    var print2 = function() {}
    print2.prototype = {
        test2: function() {
            console.log('test2')
            console.log(this)
        }
    }
    return new print2()
})() //函数对象要new

var print3 = (function() {
    var print3 = function() {
        return {
            test3: function() {
                console.log('test3')
                console.log(this)
            }
        }
    }
    return new print3()
})() //函数对象要new

//建议使用,对外api方式
var print4 = (function() {
    function _test41() {
        console.log('test41')
    }
    //_test41不对外暴露
    return {
        test4: function() {
            console.log('test4')
            console.log(this)
            _test41()
        },
        test5: function(r, callback) {
            console.log(callback) //callback回调函数结果在外面执行 function(){}()
        },
        test6: function(r, callback) {
            console.log(typeof callback)
            console.log(callback && (callback)(r)) //callback是回调函数在里面执行 function(){}
        }
    }

})() //{}对象不用new

var print5 = (function() {
    function test5(e, ops) {
        this.e = e;
        this.ops = ops;

    }
    test5.prototype.test5 = function() {
        console.log('test5')
        console.log(this)
        console.log(this.e, this.ops)
    }
    return test5
})() //函数对象在外面new print5 = new print5(1,2)

  

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<script type="text/javascript" src="./user.js"></script>
</head>
<body>
    <h1 id="test">测试</h1>
    <script type="text/javascript">
        print0.test0()
        print.console()
        print2.test2()
        print3.test3()
        print4.test4()
        print4.test5('param',function(r){
            return 'callback5'
        }())
        print4.test6('callback6',function(r){
            return r
        })
        
        print5 = new print5(1,2)
        print5.test5()

    </script>
</body>
</html>

 

  

posted @ 2019-08-18 22:49  fosonR  阅读(238)  评论(0编辑  收藏  举报