123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- function Stack(){
- Object.defineProperties(
- this,
- {
- add:{
- enumerable:true,
- writable:false,
- value:addToStack
- },
- next:{
- enumerable:true,
- writable:false,
- value:run
- },
- clear:{
- enumerable:true,
- writable:false,
- value:clearStack
- },
- contents:{
- enumerable:false,
- get:getStack,
- set:setStack
- },
- autoRun:{
- enumerable:true,
- writable:true,
- value:true
- },
- stop:{
- enumerable:true,
- writable:true,
- value:false
- }
- }
- );
- var stack=[];
- var running=false;
- var stop=false;
- function clearStack(){
- stack=[];
- return stack;
- }
- function getStack(){
- return stack;
- }
- function setStack(val){
- stack=val;
- return stack;
- }
- function addToStack(){
- for(var i in arguments){
- stack.unshift(arguments[i]);
- }
- if(!running && !this.stop && this.autoRun){
- this.next();
- }
- }
- function run(){
- running=true;
- if(stack.length<1 || this.stop){
- running=false;
- return;
- }
- stack.shift().bind(this)();
- }
- }
|