javascriptモードのAPIモード
3105 ワード
javascript API :
, 。 :
1) :
, , :
function demo01 (callback){
callback();
}
function test01(){
console.log("aaa");
}
demo01(test01);//"aaa"
:
var myobj = {
name:"zhangsan",
setName:function(person){
person.name = this.name;
}
};
function getName(callback){
var obj={};
if(typeof callback === "function"){
callback(obj);
}
return obj.name;
}
console.log(getName(myobj.setName));// , this (window),window.name 。
? 。
var myobj = {
name:"zhangsan",
setName:function(person){
person.name = this.name;
}
};
function getName(callback,callObj){
var obj={};
if(typeof callback === "string"){
callback = callObj[callback];
}
if(typeof callback === "function"){
callback.call(callObj,obj);
}
return obj.name;
}
console.log(getName("setName",myobj));//zhangsan
console.log(getName(myobj.setName,myobj));//zhangsan
2) :
:
a) , ;
b)
c)
d)
:
a)
b) ,
var configure = {
name:"zhangsan",
sex :"male",
age :23
}
setPerson(configure);//
3) :
, 。 :
var parent = function(){
var name = "zhangsan";
return function(){
return name;
}
}
console.log(parent()());//zhangsan
parent() , , ,
, 。 :
var getCount = function(){
var i=0;
return function(){
return ++i;
}
}
var getI = getCount();
getI();//1
getI();//2
getI();//3
4)Curry :
:
var add = function(x,y){
return x+y;
}
add(1,2)//3
:
var add = function(x,y){
return 1+y;
}
var add = function(x,y){
return 1+2;
}
curry add :
var add = function(x,y){
if(typeof y === "undefined"){
return function(y){
return x + y;
}
}
return x+y;
}
console.log(add(1));//function
console.log(add(1,2));//3
console.log(add(1)(2));//3
, curry myCurry
function myCurry(fn){
var slice = Array.prototype.slice,
oldargs = slice.call(arguments,1);
return function(){
var newargs = slice.call(arguments),
args = oldargs.concat(newargs);
return fn.apply(null,args);
}
}
function multi(a,b,c,d){
return a*b*c*d;
}
console.log(myCurry(multi,1,2)(3,4));//24
, Curry , , , Curry 。