`
starnc
  • 浏览: 145055 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

关于with(arguments.callee)

 
阅读更多
    function Sing()
    {
        with(arguments.callee)
          alert(author + ":" + poem);
    };
    Sing.author = "李白";
    Sing.poem = "汉家秦地月,流影照明妃。一上玉关道,天涯去不归";
    Sing();
    Sing.author = "李战";
    Sing.poem = "日出汉家天,月落阴山前。女儿琵琶怨,已唱三千年";
    Sing();


   对于这段代码不理解的地方在于with(arguments.callee),分成两个部分看:1、 with()   2、arguments.callee


   with(){}  它为语句设定默认对象,也就说它里面的语句可以不用再在前面加这个对象的名字了  eg:

   function Sing()
    {
        with(arguments.callee)
          alert(author + ":" + poem);
    };

    //等于

    function Sing()
    {
          alert(Sing.author + ":" + Sing.poem);
    };




    callee 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。

    callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。


       


    function Sing()
    {
        with(arguments.callee)
          alert(author + ":" + poem);
    };
    //等于

     function Sing()
    {
        with(Sing)
          alert(author + ":" + poem);
    };







分享到:
评论

相关推荐

    javascriptEcma5

    7. **arguments对象和caller属性**:在严格模式下,重新赋值arguments对象或访问arguments.caller和arguments.callee将导致运行时错误。这强制开发者使用更清晰的函数调用逻辑。 8. **全局对象访问**:对全局对象的...

    js5笔记.rarjs5笔记.rar

    `arguments.callee`和`arguments.caller`在严格模式下不再可用,但新增了`arguments.length`和`arguments[index]`,提供对函数参数的访问。 8. **跨域XMLHttpRequest**: JS5放宽了对跨域请求的限制,允许通过`...

    深入JavaScript严格模式:最佳实践与应用指南

    - **函数调用的严格性**:限制使用`arguments.callee`和`arguments.caller`等可能引发性能问题的属性。 - **禁止使用`with`语句**:因为`with`语句可能会导致代码难以阅读和维护。 - **增强的错误报告**:提供更详细...

    Lecture_8_JavaScript最佳实践1

    9. `arguments`不会自动反映函数参数的变化,禁止使用`arguments.callee`和`arguments.caller`。 10. 禁止`this`指向全局对象。 11. 增加了一些保留字,如`protected`、`static`和`interface`。 四、变量声明置于...

    前端面试题整理

    - 在JavaScript中,可以使用`arguments.callee`来调用自身实现递归。例如,计算阶乘的递归函数可以写作: ```javascript function factorial(n) { if (n ) return 1; return n * arguments.callee(n - 1); } `...

    flash action script 经典字典教程大全,学flash必备

    callee arguments.callee caller arguments.caller 摄像头 Camera 类 capabilities System.capabilities 对象 CAPSLOCK Key.CAPSLOCK caption ContextMenuItem.caption case case catch try..catch.....

    jquery1.9.1中文版

    // the stack via arguments.caller.callee and Firefox dies if //你尝试查找通过“精确使用”呼叫链接(#13335) //支持:火狐浏览器 18+ //“精确使用”; var //deferred对象被使用在DOM(Document Object ...

    jquery1.9.1中文汉化版

    // the stack via arguments.caller.callee and Firefox dies if //你尝试查找通过“精确使用”呼叫链接(#13335) //支持:火狐浏览器 18+ //“精确使用”; var //deferred对象被使用在DOM(Document Object ...

    javascript代码讲解ppt

    1. **With语句与this值**:在某些情况下,使用`with`语句可能会改变`this`值的指向,从而导致意外的结果。 2. **this值**:`this`值在不同的上下文中会有不同的行为,了解它的具体指向对于理解JavaScript的行为至关...

    __babel-bug-2620:https

    if (path.node.callee.name === 'fetch' && path.node.arguments[0].value.startsWith('https')) { // 对HTTPS请求做特殊处理 } } } }; }; ``` 在`.babelrc`中引入这个自定义插件: ```json { "plugins": [...

    javascript的闭包介绍(司徒正美)

    return n * arguments.callee(n - 1); } })(4); console.log(factorial); // 输出 24 ``` 通过闭包实现递归函数,计算给定数字的阶乘。 3. **封装对象属性的访问器**: ```javascript function User...

    Ecma-262(ECMAScript5.1中文版+英文版)

    还有`arguments`对象的`callee`属性的可选替代`Function.prototype.caller`,用来获取调用当前函数的函数。 3. **数组增强**:ECMAScript 5.1引入了数组的多种新方法,如`forEach()`, `map()`, `filter()`, `reduce...

    《javaScrip开发技术大全》源代码

    第2章(\代码\第02章) • sample01.htm 将...• sample18.htm with语句 • sample19.htm with语句的等价代码 ...• sample12.htm Arguments对象的使用方法 • sample13.htm ...

    js初学者入门

    3. 参数传递可使用`typeof()`检查类型,多余的参数会被忽略,`arguments`对象记录所有传入参数。 `callee`属性在递归调用时用于引用当前执行函数。 `length`属性分别表示函数定义时的参数个数和实际传递的参数个数...

    javascript文档

    callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其数值...

    JScript 语言参考

    callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其数值...

    微软JavaScript手册

    callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其数值...

Global site tag (gtag.js) - Google Analytics