前言

这次有幸参与前端的工作,对于前端开发学习了不少新知识,在此记录一下相比之前,完全不同的Javascript编写方式。

原来的编写方式

之前也是写过Javascript,就是常见的.js 文件写函数:

function SayHello(){
alert('Test.');
}

然后再使用页面引入该.js文件 即可调用SayHello方法。

新学方式

现在使用prototype,使用对象调用:

(function (exports, W, D, $) {
'use strict'; function History(W, D) {
this.W = W;
this.D = D;
this.ChatUI = W.ChatUI; this.$Overlay = $('#overlay');
this.$Alert = $('#alert-cnt');
this.$PaginationHis = $('.pagination-container');
this.$SearchForm = $('.filter-form');
this.GetSearchFormData = function () {
var status = this.$SearchForm.find('[name="sel-status"] option:selected').val().trim();
var data = {};
var startDate = this.$SearchForm.find('input[name="StartDate"]').val();
var endDate = this.$SearchForm.find('input[name="EndDate"]').val();
data = {
Status: status,
StartDate: startDate,
EndDate: endDate,
};
return data;
}; this.baseUrl = W.baseUrl; this.DisplayOverlayDialog = function () {
this.$Overlay.removeClass('hidden');
this.$Overlay.show();
this.$Overlay.find('.overlay-container').show();
this.$Overlay.find('.overlay-loading').hide();
} this.HideOverlay = function () {
this.$Overlay.hide();
} this.AlertError = function (errmsg) {
this.$Alert.find('.alert-success').hide();
this.$Alert.find('.alert-danger').text(errmsg).show();
} this.AlertSucc = function (succmsg) {
this.$Alert.find('.alert-danger').hide();
this.$Alert.find('.alert-success').text(succmsg).show();
} this.AlertNone = function () {
this.$Alert.find('.alert-danger').hide();
this.$Alert.find('.alert-success').hide();
}
} History.prototype.BindEvent = function () {
var chatForm = this;
$('#a.btn').click(function (event) {
var $tgt = $(event.target);
});
}; History.prototype.LoadDataAjax = function (ajaxUrl, postData, isRest) {
var history = this;
$.blockUI();
$.ajax(ajaxUrl, {
dataType: 'html',
data: postData,
timeout: 12000,
method: "POST",
success: function (data) {
$('input[name="total-cnt"]').remove();
var $caseTable = $('.histroy-case');
$caseTable.remove();
$('.hitory-msg').remove(); $(data).insertBefore(history.$PaginationHis);
var totalCount = $('input[name="total-cnt"]').val();
history.InitPagination(totalCount, true, isRest);
history.AlertSucc("Get case list succeed.")
$.unblockUI();
},
error: function (error) {
history.AlertError("Internal occurs error, please try again.")
$.unblockUI();
},
complete: function () {
$.unblockUI();
}
});
} History.prototype.InitPagination = function (totalCount, isReInit, isReset) {
var historyPage = this;
var paginationHis = historyPage.$PaginationHis; var total = $('input[name="total-cnt"]').val();
var pageSize = 5;
pageSize = parseInt(pageSize);
if (totalCount != null) {
total = parseInt(totalCount);
}
if (total == 0) {
paginationHis.addClass("hidden");
} else {
paginationHis.removeClass("hidden");
}
if (isReset) {
paginationHis.bootpag({
page: 1
});
}
paginationHis.bootpag({
total: Math.ceil(total / pageSize),
maxVisible: 10
}).on('page', function (event, num) {
var ajaxUrl = "/Home/AjaxLoadCase";
var postData = historyPage.GetSearchFormData();
postData.Pagination = {
PageIndex: num,
PageSize: pageSize,
Status: postData.Status,
StartTime: postData.StartDate,
EndTime: postData.EndDate
}
if (!isReInit || isReInit == undefined) {
historyPage.LoadDataAjax(ajaxUrl, postData, false);
}
});
} History.prototype.FilterData = function () {
var history = this; history.$SearchForm.on('submit', function () {
var postData = history.GetSearchFormData();
var pageSize = 5;
postData.Pagination = {
PageIndex: 1,
PageSize: pageSize,
Status: postData.Status,
StartTime: postData.StartDate,
EndTime: postData.EndDate
}
var ajaxUrl = "/Home/AjaxLoadCase";
history.LoadDataAjax(ajaxUrl, postData, true);
return false;
});
};
History.prototype.InitDatePicker = function () {
$('.datepicker').datepicker({ defaultDate: new Date() });
} var history = new History(window, document);
exports.module = exports.module || {};
exports.module.history = history;
history.BindEvent();
history.InitPagination();
history.InitDatePicker();
})(window.ChatUI, window, document, window.$);

说明

1.严格模式:use strict

顾名思义,是的Javascript在严格条件下执行,这些严格条件包括:

-消除Javascript语法的不合理、不严谨之处;

-提高编译器效率,增加运行速度;

-消除代码运行的不安全之处;

严格模式下,很多函数操作会抛错或者禁止使用,比如this的使用,变量的作用域等,目前在学习中。

2.调用方式

声明了History的对象,就可以点出History下所有的函数或者变量成员。是的调用的时候,提示清晰明了。

3.闭包理解

这一块还是没搞太明白(沮丧)。

闭包,就是使内部函数可以访问定义在外部函数中的变量,但是外部板书不能访问内部定义的变量。

for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
}, 5);
}

这将打印出5 5 5 5 5, 而不是0 1 2 3 4,被坑。

Js的var的作用域,有作用域链,还有this关键字,构造器中的 this会指向新对象,而不是一开始中的this对象,打印这两次this,输出不一样。

后记

先将这个编程方式记录下来,日后学习。最后感谢前端同事给予机会,学习了新知识。

记Javascript的编写方式的全新学习的更多相关文章

  1. html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结

    Day27  html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...

  2. 【JavaScript的引入方式】

    javascript:   是基于对象和事件驱动的客户端脚本[组成] Bom:浏览对象模型(与浏览器交互的方法和接口) Dom:文档对象模型(处理网页内容的方法和接口) ecma:核心(描述了js的语 ...

  3. 2、JavaScript 基础二 (从零学习JavaScript)

     11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...

  4. 1、JavaScript 基础一 (从零学习JavaScript)

    1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...

  5. Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  6. [技术翻译]在现代JavaScript中编写异步任务

    本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...

  7. JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符

    JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. web前端(13)—— 了解JavaScript,JavaScript的引入方式

    从本篇博文开始,将进入web前端方便最关键最重要的部分——javascript,学到后面你就知道它真的太重要了 什么是JavaScript JavaScript一种直译式的脚本语言,是一种动态类型.弱 ...

  9. java 编写小工具 尝试 学习(七)

    1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...

随机推荐

  1. call()和apply()的作用

    call( )和apply( )都是为了改变某个函数运行时的上下文而存在的.换句话说是改变函数体内部this的指向 他们的区别就是call()方法接受的是若干个参数的列表,而apply()方法接受的是 ...

  2. cglib代理

    简介: github地址:https://github.com/cglib/cglib,可以访问这个地址查看cglib源码和相关文档. 简单的摘录了wiki上关于cglib的描述: cglib is ...

  3. JAVA多线程---volatile关键字

    加锁机制既可以确保可见性又可以保证原子性,而volatile变量只能确保可见性. 当把变量声明为volatile时候 编译器与运行时都会注意到这个变量是共享的,不会将该变量上的操作与其他内存操作一起重 ...

  4. 深入理解计算机系统chapter6

    1. 2. 3. 存储器山

  5. 7-21(排序) PAT排名汇总

    计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才, ...

  6. 你真的会阅读Java的异常信息吗?

    给出如下异常信息: java.lang.RuntimeException: level 2 exception at com.msh.demo.exceptionStack.Test.fun2(Tes ...

  7. java关于随机数和方法重构

    1.生成随机数 源代码 package Zuote; public class SuiJiShu { public static void main( String args[] ) { java.u ...

  8. 在项目中创建单元测试时junit的配置和使用

    首先配置项目中AndroidMainfest.xml文件,加入 <instrumentation android:name="android.test.InstrumentationT ...

  9. C-图文上边对齐

    1.效果 1.1 样式设置 2 效果  2.1 样式

  10. Python统计列表中的重复项出现的次数的方法

    本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下:对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在 ...