1、!!a
把a变量强制转化为Bollean类型。
var a = false; if(b && b == 'true'){ a = true; }
替换为
var a = !!(b && b == 'true');
2、+’hello’
把string自动转化为number类型
3、||和&&
var a = 0; if(b){ a = b; } else if (c){ a = c; }
替换为
var a = b || c || 0;
4、[arr]转数组
var b = [a];
5、bind函数的使用
originFunciton.bind(args,arg1)
返回一个与原始函数originFunciton有相同主体的新函数,即绑定函数.在绑定函数中,this被解析为传入的对象args.arg1为要传递到新函数(绑定函数)中的参数列表.
var func = function(value){ this.name = 'rose'; this.age = value; console.log(this);//Object {name: "rose", age: 20} }; var obj = { name : 'john' }; var val = 20; var newFunc = func.bind(obj,val); newFunc();
6、caller的使用
func.caller;
获取调用当前函数的函数.caller只在当前函数被执行时被定义.如果当前函数是在JavaScript顶层被调用,则caller为null.
demo如下:根据函数的不同触发源,组织不同数据
var getData = function(){ var data = getData.caller && {idx:1}; $.ajax({ url:'http://127.0.0.1:8888/', dataType:'jsonp', data:data, success:function(ret){ console.log(ret); }, error:function(error){ console.log(error); } }); }; getData(); var getDataFromTag = function(){ getData(); }; getDataFromTag();
7、函数length属性的使用
func.length.
返回一个函数定义的参数数量.
var getData = function(a){ var data = getData.length < arguments.length ? null : {idx:1}; $.ajax({ url:'http://127.0.0.1:8888/', dataType:'jsonp', data:data, success:function(ret){ console.log(ret); }, error:function(error){ console.log(error); } }); } getData(); var getDataFromTag = function(){ getData(2,3); }; getDataFromTag();
8、arguments属性的使用
func.arguments || arguments.
获取当前正在执行的函数的参数.
9、call || apply函数的使用
func.call(null|| args,arg1)
func.apply(null|| args,arg1)
调用一个对象的方法,用另一个对象替换当前对象,传入参数形式不同而已.
var getData = function(){ console.log(this,arguments); } getData(1); var fetchData = { getDataFromTag: function(){ this.tagData = {type:'tag',id:'102'}; getData.apply(this,['apply',3,4]); }, getDataFromOther: function(){ this.otherData = {type:'other',id:'other_2'}; getData.call(this,'call',5,6); } } fetchData.getDataFromTag(); fetchData.getDataFromOther();