JavaScript设计模式-1.函数
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript高级语法1-函数</title>
</head>
<body>
<script>
function print(p){
console.log(p.toString(),p)
}
/*
var arr= new Array();
arr.push(1);
arr.push(2);
arr.push(3);
arr.push(4);
print(arr);
print(arr.join(":"))
var arr2 = [5,6,7,8]
print(arr.concat(arr2))
//each() 扩展函数的方法
Array.each = function(array,fn){
for(var i=0;i<array.length;i++){
fn(array[i]);
}
}
Array.each(arr,function(v){
print(v);
}) //回调函数定义
function add(x,y,fn){
this.x=x||1;
this.y=y||1;
if(fn){
fn(this.x + this.y);
}
} add(3,5,function(v){
if(v>5){
alert("res >5")
}else{
alert(res <=5"")
}
}) //函数传参
//1.参数传递随意性(可以少传或多传参数)
function add(x,y,z){
this.x = x||0;
this.y = y||0;
this.z = z||0;
alert(this.x+this.y+this.z);
} add(12,3,4,5);
//弊端:无法像java等高级语言那样有函数精确复写的特性。
//技巧:如果你这个类是工具类的情况下,那么接收的参数最好是对象。
//conf={gridName:"",gridCode:"",gridSize:""}
function gridUtil(conf){
alert(conf["gridName"]+conf["gridSize"]);
}
gridUtil({gridName:"zhangsan",gridSize:"20"}) //传值还是传地址
var i = 100;
var s = "one";
function add3(i,s){
i++;
s+="--"
}
add3();
alert(i);
alert(s); //证明基础变量传递数值。 var o = {name:"zhangdan"};
function change(o){
o["name"] = "javascript";
}
change(o);
alert(o.name); //证明自定义对象传参方式传的是地址。 //函数递归
function add4(start,end){
var num= 0;
num += start;
if(start<end){
num += add4(start+1,end);
}
return num
}
alert(add4(1,100)); //代理函数--》 用程序来决定返回的新的函数(生产函数的函数)
//模拟数据库
var person = {"jim":'m',"lili":"w"}
var test = function(name){
if(person[name]=="m"){
return function(nk,wk){
alert(nk+" "+wk);
}
}else if(person[name]=="w"){
return function(nk,wk,fk){
alert(nk+" "+wk+" "+fk);
}
}
}
test("jim")("ok","ok");
test("lili")("ok","ok","no");
//前端代码不常用,会使代码复杂化。架构常用。 */ //eval()函数 --》把一个字符串解析成一个函数并执行
var str = "var show = function(){alert(100)}()";
eval(str);
// 应用场景:数据库有时候会返回一个字符串(长得像js数组);
var a = "[1,2,3]";
var arr = eval(a);
for(var i = 0;i<arr.length;i++){
console.log(arr[i]);
} </script>
</body>
</html>
JavaScript设计模式-1.函数的更多相关文章
- JavaScript 设计模式 - 工具函数
1.类式继承,模拟面向对象语言的继承方式 function extend(subClass, superClass) { var F = function() {}; F.prototype = su ...
- JavaScript设计模式与开发实践——读书笔记1.高阶函数(上)
说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<Java ...
- 《JavaScript设计模式 张》整理
最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- Javascript设计模式学习一
学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...
- javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)
在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...
- javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)
在上一篇<javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)>里,通过采用迭代器模式完成了各初始化函数的定义和调用. 接下来就要完成各个切换效果的编 ...
- javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)
类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...
- 常用的Javascript设计模式
<parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...
随机推荐
- [翻译]Writing Custom DB Engines 编写定制的DB引擎
Writing Custom DB Engines 编写定制的DB引擎 FastReport can build reports not only with data sourced from ...
- Android-自定义控件之绘图基础
画圆形,效果图: 布局中去指定自定义View: <view.custom.androidcustomviewbook.a_draw_base.BaseView android:layout_wi ...
- 国际时区 TimeZone ID列表
public static void main(String[] args) { Calendar c = new GregorianCalendar(); c.setTime(new Date()) ...
- Sqlserver 密码过期时间查询
DECLARE @login nvarchar(30) -- 查询设定密码过期的登陆账号SELECT @login = nameFROM sys.sql_loginsWHERE is_expirati ...
- Vulnhub Billu_b0x
1.信息收集 1.1.获取IP地址: map scan report for 192.168.118.137 Host is up (0.00017s latency). Not shown: 998 ...
- BruteXSS(汉化版)
BruteXSS是一个非常强大和快速的跨站点脚本暴力注入.它用于暴力注入一个参数.该BruteXSS从指定的词库加载多种有效载荷进行注入并且使用指定的载荷和扫描检查这些参数很容易受到XSS漏洞.得益于 ...
- 如何查看mysql 默认端口号和修改端口号
http://blog.itpub.net/26148431/viewspace-1466379/ 1,登录mysql 2,使用命令show global variables like 'port'; ...
- mybatis pagehelper多数据源配置的坑
我用spring boot配置了2个数据源的工程用来同步不同库的数据,发现如果配置成如下格式报错 #分页配置pagehelper: helper-dialect: mysql reasonable: ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- 终于搞定在VS2010中将CString转换为const char*
最近碰到了CString 转 const char *的问题. 以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以 ...