zoukankan      html  css  js  c++  java
  • 语言特性-上下文对象

    javascript中,代码总有一个上下文对象(即:代码属于哪个对象)。上下文对象是通过this实现的,这个变量永远指向当前代码所处的对象中。全局对象其实是window对象的属性。

    例:<script language="javascript" type="text/javascript">

            var obj = {

                yes: function() {

                    this.name = "rxm";

                },

                no: function() {

                    this.name = "null";

                }

            };

     

            alert(obj.name == null); // obj没有name属性。undefined

            obj.yes(); //只有调用执行了yes方法后,才能把属性和对象挂钩

            alert(obj.name); //rxm

     

            window.no = obj.no;

            window.no(); //执行这个方法相当与执行obj.no();

            alert(window.name)//null

            alert(obj.name); //只是把obj的no赋给了window.no对象。

    </script>

     

    下面这个例子运行的时候是会报错的。上下文对象是很容易出问题的,还好我们有call和apply.

          <script language="javascript" type="text/javascript">

            function changeColor(color) {

                this.style.color = color;

            }

            changeColor("white"); //报错消息: 'this.style' 为空或不是对象。

            //以上报错是因为this所指的对象window没有style属性。

        </script> 

    constructor一样,call,apply是Function.prototype的方法。每个Function实例都有的。

    区分apply,call就一句话, foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments

    补救:var main = document.getElementById("main");

            changeColor.call(main, "white"); //call

            function setcolor() {

                changeColor.apply(main, arguments);//apply

            }

            setcolor("white");//传参数[组]

     

  • 相关阅读:
    ASP.Net TreeView递归
    WCF发布到IIS7问题的解决方案 (转)
    NavigationService
    【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定? Life Is Art 博客园
    Visibility
    WPF操作RichTextBox(转)
    WCF4.0进阶系列第三章 构建健壮的程序和服务(转)
    TreeView(递归)(转)
    WCF4.0 进阶系列–前言(转)
    递归删除树结构数据
  • 原文地址:https://www.cnblogs.com/hometown/p/3204219.html
Copyright © 2011-2022 走看看