var obj = (function() { var privateFn = function() { alert(this.id); } return { id: 123, publicFn: function() { privateFn.call(this); } }; }()); obj.publicFn();
像上面,你可以访问到 ojb.publicFn(), 但私有的 privateFn() 就无法通过 obj.privateFn() 访问到了。
call 与 apply 不同点是接受参数方式不同:
apply(this,[param1,param2, ...]); call(this,param1, param2, ...);