????Twitter ??????????????в????????????????? Twitter ?????δ?й????? JavaScript ????飬????????????????????????????????????????á???д????????????????????????д???????????????????????????????????м??????????д?????? JavaScript ??????????????????????Щ?????????? QUnit?????????????????????? JavaScript ???????
??????????
????????????????е?????????????????? ??JavaScript ??????? ??????д????????????????????????Ч????????????????????????????  ???????????????????? ??????????????????????????????д???????????????ó??????????????????????????????????????
???????磬???????μ??????饗???????????????????
????JavaScript
????var dataStore = (function() {
????var data = [];
????return {
????push: function (item) {
????data.push(item);
????}??
????pop: function() {
????return data.pop();
????}??
????length: function() {
????return data.length;
????}
????};
????}());
????var dataStore = (function() {
????var data = [];
????return {
????push: function (item) {
????data.push(item);
????}??
????pop: function() {
????return data.pop();
????}??
????length: function() {
????return data.length;
????}
????};
????}());
?????????????飬???????????? foo.bar ??????????????????? QUnit ?????????
????JavaScript
????module("dataStore");
????test("pop"?? function() {
????dataStore.push("foo");
????dataStore.push("bar")
????equal(dataStore.pop()?? "bar"?? "popping returns the most-recently pushed item");
????});
????test("length"?? function() {
????dataStore.push("foo");
????equal(dataStore.length()?? 1?? "adding 1 item makes the length 1");
????});
????module("dataStore");
????test("pop"?? function() {
????dataStore.push("foo");
????dataStore.push("bar")
????equal(dataStore.pop()?? "bar"?? "popping returns the most-recently pushed item");
????});
????test("length"?? function() {
????dataStore.push("foo");
????equal(dataStore.length()?? 1?? "adding 1 item makes the length 1");
????});