/**
* 对象定义
* @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>