<!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.函数的更多相关文章

  1. JavaScript 设计模式 - 工具函数

    1.类式继承,模拟面向对象语言的继承方式 function extend(subClass, superClass) { var F = function() {}; F.prototype = su ...

  2. JavaScript设计模式与开发实践——读书笔记1.高阶函数(上)

    说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<Java ...

  3. 《JavaScript设计模式 张》整理

    最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...

  4. 《JavaScript设计模式与开发实践》整理

    最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...

  5. Javascript设计模式学习一

    学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...

  6. javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

    在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

  7. javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)

    在上一篇<javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)>里,通过采用迭代器模式完成了各初始化函数的定义和调用. 接下来就要完成各个切换效果的编 ...

  8. javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)

    类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...

  9. 常用的Javascript设计模式

    <parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...

随机推荐

  1. [SAP]编辑表

    SAP中,不能直接修改表的内容,可以用SE16N进行调试打开编辑选项,进行修改. (注:直接修改数据有风险,首先要确认修改数据的关系或做好必要的备份) 1:运行SE16N ,填好表名,参数等. 2:在 ...

  2. Android-SDCardUtil-工具类

    SDCardUtil-工具类,是专门处理,外置存储Sdcard的操作 package common.library.utils; import android.annotation.SuppressL ...

  3. 设置TeeChart的提示文本

    使用第三方Steema的TeeChart控件,设置鼠标放在某一线条点上,显示某一点的数据标签问题(虚线型十字光标基准线,放在线上显示对应点的二维坐标轴数据数据),调用InitTeeChartTipTo ...

  4. winform 版本号比较

    Version now_v = new Version(strval); Version load_v = new Version(model.version.ToString()); if (now ...

  5. .Net生成导出Excel

    概述 在做.Net web开发的过程中经常需要将查出的数据导成Excel表返给用户,方便用户对数据的处理和汇总.这里我将导出Excel表格的代码做一个总结,这也是我项目中经常用到的,代码简单易懂,使用 ...

  6. CF834D The Bakery

    题目链接:戳我 题意:将一个长度为n的序列分为k段,使得总价值最大.一段区间的价值表示为区间内不同数字的个数 \(n<=35000,k<=50\) 开始想的转移方程是这个样子的--\(dp ...

  7. Syncthing源码解析 - 第三方库

    1,AudriusButkevicius/cli 网址:https://github.com/AudriusButkevicius/cli 2,bkaradzic/go-lz4 网址:https:// ...

  8. 375. 猜数字大小 II leetcode java

    题目: 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了. 然而,当你猜了数字 x 并且猜错 ...

  9. centos7修改静态ip地址

    今天逛园的时候突然发现这篇有关网络参数修改的文章写的很好,简单又使用,格式也很好的,所以就引用过来了. http://www.cnblogs.com/hongdada/p/6666932.html

  10. LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)

    题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...