一些ES6语法之函数上下文
摘要:一些ES6语法之函数上下文
javascript中函数运行的上下文或者环境很特殊
function person(value)
{
let valueone = 1;
this.then=function (zezeleft,zezeright)
{
return new person((left,right) =>
{
next(zezeleft,zezeright);
right(valueone);
}
)
}
function left(res)
{
valueone = res;
}
function right(res)
{
valueone = res+"zeze";
}
this.didi = function()
{
console.log(valueone);
}
function next(left , right)
{
console.log(valueone);
}
value(left,right);
}
p = new person((left,right) => {console.log("one");left('hello1')});
//p=p.then(console.log("left1"),console.log("right1"));
p=p.then(()=>{console.log("left1")},()=>{console.log("right1")});
重点关注:
this.then=function (zezeleft,zezeright)
{
return new person((left,right) =>
{
next(zezeleft,zezeright);
right(valueone);
}
)
}
其中next的作用域是在this这个对象中,left和right是在new person这个对象传入的,作用域是new person。也就是next这个函数里操作的所有的变量和方法都来自于this,left和right方法操作的变量和方法都来自域new person。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。