
function Hard(str){
var that = {};
that.__proto__ = arguments.callee.prototype ;
that.str = "I am " + str;
setTimeout(that.settime.bind(that));
return that;
}
Hard.prototype.yanchi = function(m){
console.log("sleep")
var d = new Date();
var n = this._restFirst*1000;
for(var i = 0; i < d; i++){
if( new Date() - d > n ){
console.log("sleep end")
return false;
}
}
}
Hard.prototype.learn = function( sr ) {
this._learn = sr;
return this;
}
Hard.prototype.rest = function( num ){
this._rest = num;
return this;
}
Hard.prototype.restFirst = function ( n ) {
this._restFirst = n;
this._rest = 0;
return this;
}
Hard.prototype.settime = function(){
var { str, _learn, _rest, _restFirst} = this;
var num = _rest || _restFirst;
if( _restFirst !== undefined ){
this.yanchi();
}else{
console.log(str);
}
if(num){
setTimeout(function(){
console.log( `Start learning after ${ num } seconds` );
if( _restFirst !== undefined ){
console.log(str);
}
if( _learn ){
console.log( "Learning " + _learn )
}
},_rest*1000)
}
}