浅解javascirpt this 让我们来浅浅的理解它

发布于 2022-09-30 12:08:04 字数 3784 浏览 15 评论 0


浅解javascirpt this 让我们来浅浅的理解它

http://stackoverflow.com/questio ... ript-object-literal

这篇文章只能说给一个this的基本认识.深入详解待我看完ecma-262-3...

或者你可以移步到:翻看一下已经消化过一次的ecma-262-3

http://dmitrysoshnikov.com/tag/ecma-262-3/

你可以参考这个网站的基础:

http://remember2015.info/blog/?p=141

The this variable is attached to functions. Whenever you invoke a function, this is given a certain value, depending on how you invoke the function. This is often called the invocation pattern.

明确两点:

1.this永远指向调用者.永远永远!!!!!这是最高优先级.

2.javascript里一切皆object

调用javascript的方法典型的四种

method

function

constructor

apply

method的可以理解为在java中,对象里面的成员方法

  1. var name="globle"var foo = {name:"foo"};
  2. //foo.someMethod相当于java里的静态方法foo.someMethod = function(){
  3.     console.info(this.name);
  4. }
  5. //打印出foo这里的this指向foo 对象.可以用chrome调试一下(强烈推荐有chrome,个人觉得比firebug好)Function 理解为c++的静态函数
  6. var name = "globle"
  7.     var foo = function(){
  8.     var name="foo"  //这样定义实际上是定义的局部变量,如果要定义为全局变量去掉var
  9.        alert(this.name);//this指向调用它的全局对象
  10. alert(name);     //根据scope chain函数的局部变量在顶端,所以先找到foo,如果不定义var name=”foo”将打印globle    }

复制代码foo();

//先打印出globle,再打印foo//this在这里指向window.objects.调用的它的全局对象.

在闭包.this指向的也是全局对象

  1. var foo = {};
  2.         var name="globle";
  3.     foo.someMethod = (function(){
  4.          
  5.         var that = this;
  6.                 var name="foo";
  7.        return  function(){
  8.                    var name="nested";
  9.             console.info(that.name);
  10.         }
  11.     })();
  12.        
  13.         var a=foo.someMethod();

复制代码同样打印的globle;

Constructor

当使用Constructor时,一个新的对象将产生,this也将指向这个对象.

  1. function Foo(){
  2.     this.confusing = 'hell yeah';
  3. }
  4. var myObject = new Foo();

复制代码也就是说,在new Foo()的时候,this指向了myObjcet

apply 和 call

这两个函数的意思就是以其他object的作用域来调用这函数,apply call 的功能是一样,只是第二个参数不同而已

看:

  1. foo.apply('omg',args); 的作用相当于:omg.foo2=function(args){  
  2. foo(args);
  3. }
  4. omg.foo2(args);

复制代码以下this的指向就是omg这个object

  1. function foo(a,b){
  2.     alert(a);
  3.     alert(b);
  4.     alert(this);
  5. }
  6. var args = ['ah','be'];
  7. foo.apply('omg',args);

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文