博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 新技能
阅读量:7114 次
发布时间:2019-06-28

本文共 2440 字,大约阅读时间需要 8 分钟。

1. 立即执行函数 匿名函数

(function(){	console.log("123");})();

2.闭包函数

function cwm1(){		var N=0; //N是cwm1的局部变量		 function cwm2()  //cwm2是cwm1的内部函数,是闭包		 {		 	N+=1; //内部函数使用了外部函数的变量N			 	console.log(N);		 }		 return cwm2;}var result=cwm1();result();result();result();

3.使用闭包定义私有变量

function ProductCwm(){	var name;	this.setName=function(value){		name=value;	}	this.getName=function(){		return name;	}}var p= new ProductCwm();p.setName('cwm');console.log(p.name);console.log(p.getName());

4. prototype 继承属性和方法

function Rectangle(x,y){	this._length=x;	this._breadth=y;}Rectangle.prototype.getDimensions=function(){	return {		length:this._length,		breadth:this._breadth	}	}var x=new Rectangle(3,4);var y=new Rectangle(4,3);console.log(x.getDimensions());console.log(y.getDimensions());

5.模块化

var module=(function(){		var N=5;	function print(x){		console.log("this result is:"+x);	}	function add(a)	{		var x=a+N;		print(x);	}	return {		description:'this is description',		add:add	}})();console.log(module.description);console.log(module.add(10));

6.柯里化

var add = function(x){	return function(y){		return x+y;	}}var add1=add(1);console.log(add1(1));console.log(add(1)(2));

7.apply,call与bind方法

var user={    name:"CWM",    whatIsYourName:function(){        console.log(this.name);    }}user.whatIsYourName();var user1={    name:"Test Name"}user.whatIsYourName.call(user1); 

//var user={

// greet:'Kello',
// greetUser:function(userName)
// {

//    console.log(this.greet+"--"+userName);

// }
//}

//user.greetUser("cwm");

//var greet1={

// greet:'cwm'
//}

//user.greetUser.call(greet1,'world')

//user.greetUser.apply(greet1,['wordle'])

var user={

name:'cwm',
schollname:function(scholl)
{
  console.log(this.name+''+scholl);
}
}

var geruser=user.schollname.bind({name:'IloveYour'});

var getuser=user.schollname.bind({name:'YSSA'});

//geruser('beijingdaxue');

//getuser('nanjingdashu');

9. Memoization 记忆

function MemoizationFunction(func){ var cache={}; return function(){ var key=arguments[0]; if(cache[key]) { return cache[key]; }else { var val=func.apply(this,arguments); cache[key]=val; return val; } }}var fibonacci = MemoizationFunction(function(n){ return (n === 0 || n === 1) ? n : fibonacci(n - 1) + fibonacci(n - 2);});//console.log(fibonacci(100)); // 输出354224848179262000000//console.log(fibonacci(100)); // 输出354224848179262000000

  

 

---------------未完待续-------------

转载于:https://www.cnblogs.com/acwm/p/7210036.html

你可能感兴趣的文章
PicPopupWindow的使用
查看>>
以最简单的登录为例,诠释JS面向对象的简单实例
查看>>
value toDF is not a member of org.apache.spark.rdd.RDD
查看>>
活动安排问题--贪心算法
查看>>
ZOJ1070 Bode Plot
查看>>
[LeetCode] Graph Valid Tree
查看>>
web程序员标准环境之DreamWeaver【推荐】
查看>>
springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象
查看>>
无限分页
查看>>
iOS - UIColor
查看>>
Java最最常用的100个类排序(非官方)
查看>>
C#如何控制方法的执行时间,超时则强制退出方法执行
查看>>
【Python】模块之subprocess
查看>>
由一条报警信息发现的一系列问题
查看>>
Oracle Executable Binary Mismatch Detected
查看>>
Mysql Innodb中的Linux native异步I/O(一) 内存结构的初始化
查看>>
WM Activate Storage Bin Type Search(十四)
查看>>
nim的引用和指针
查看>>
DirectUI: Become windowless
查看>>
Python 数据结构_队列
查看>>