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>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...
随机推荐
- github的使用经历
首先我打开百度搜索markdown,点击这个在线编辑器,开始编写,如下图: 预览效果如下: 然后打开github的网页登录后,点击下图这个标志: 然后给给要上传的一个命名: 然后选择README 确认 ...
- solr特点六: DIH (从数据源导入数据)
在这个结构化数据和非结构化数据的数量都很庞大的年代,经常需要从数据库.XML/HTML 文件或其他数据源导入数据,并使数据可搜索.过去,要编写自定义代码才能创建到数据库.文件系统或 RSS 提要的自定 ...
- Android studio 报错 installation failed with message failed to finalize session:INSTALL_FAILED_INVALID_APK 解决方法
解决方案: File->Setting->Build->Instant Run
- Lambda 表达式浅谈- 01
已经有一段时间没有发布博文了... 今天就写一写lambda的一些简单的使用方法 Lambda 在Msdn 上的描述: Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 ...
- iOS Mac忘记登录密码的4种解决方法
4种方法: 一.使用Apple ID重置用户账户密码 使用这个方法有一个前提 如上图红框,此项必须勾选,否则无法使用Apple ID重置密码.(如果你不记得有没有勾选,则你起码要记得首次启动 OS X ...
- PHP 代码优化测试【Benchmark数据测试】
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 Benchmark测试之前我们先来了解Benchmark.直接下载:ht ...
- 如何学习sql语言?
如何学习 SQL 语言? https://www.zhihu.com/question/19552975 没有任何基础的人怎么学SQL? https://www.zhihu.com/question/ ...
- PHP之编写日志文件留后门(免杀)
(我知道你们都喜欢干货,所以也没亏待你们,请到文末吧,成果附件已上传~) 本文原创作者:Laimooc(原名xoanHn) 鄙人宗旨: 本人秉着爱学习爱恶搞爱研究爱进步并且遵纪守法的心态写下这篇文章, ...
- 我从Linux走来,选择了Windows
我从Linux走来,选择了Windows 几天前就想提笔写下这篇,理解很多人一定会对言论不苟同. 但是我相信您看完一个一年多的Linux用户写完的以后,一定也不会太反对 一.为什么我成为一名 Linu ...
- Jmeter之线程组详解
hello,更新几天的分享,线程数现在才分享,感觉怪怪的,原谅我没有考虑到一个顺序问题哈,那里总结好了,我就发那里,先把组件都写完,再来项目实战,希望大家不要责怪哈,内容有写的不详细的,或者我说错了, ...