js中this绑定问题-javascript中关于this的绑定问题

问题描述

javascript中关于this的绑定问题
 var point = {
 x : 0,
 y : 0,
 moveTo : function(x, y) {
     // 内部函数
     var moveX = function(x) {
     this.x = x;//this 绑定到了哪里?
    };
    // 内部函数
    var moveY = function(y) {
    this.y = y;//this 绑定到了哪里?
    }; 

    moveX(x);
    moveY(y);
    }
 };
 point.moveTo(1, 1);
 point.x; //==>0
 point.y; //==>0
 x; //==>1
 y; //==>1

解决方案

javascript使用bind()函数绑定this
JavaScript的三种this指向问题
绑定到异步的ObservableCollection [This type of CollectionView does not support changes to its SourceColl]

解决方案二:

就是point对象,你用的是哪个就代表哪个

解决方案三:

 moveTo : function(x, y) {
// 内部函数
var moveX = function(x) { //这个函数相当于闭包的概念
this.x = x;//this 绑定到了哪里?
};
// 内部函数
var moveY = function(y) {
this.y = y;//this 绑定到了哪里?
};
moveX(x); //这里调用的时候前面是没有对象的,所以该函数内部如果有this,是指window,不是Point
moveY(y);
}
};
如果要执行当前对象,则需要改一下
moveTo : function(x, y) {
// 内部函数
this.moveX = function(x) {  //加载this后如果是对象调用moveTo方法,则this指向调用的对象,也就不存在全局变量x了
this.x = x;//this 绑定到了哪里?
};
// 内部函数
this.moveY = function(y) {
this.y = y;//this 绑定到了哪里?
};
this.moveX(x);
this.moveY(y);
}
};

解决方案四:

this.y的绑定问题 指的是本页面的y

解决方案五:

那样调用内部的moveX和moveY,this指向的是window对象,并不是point。除非用call/apply改为this的指向

 moveX.call(this,x);
    moveY.call(this,y);
时间: 2024-09-20 08:39:43

js中this绑定问题-javascript中关于this的绑定问题的相关文章

jQuery中的read和JavaScript中的onload函数的区别_jquery

在JavaScript中,onload函数是最经常使用的,几乎涉及到JavaScript的童鞋都少不了要接触它.这个函数的作用就是等待网页完全装载完了以后再去执行代码块内的语句,因为按照文档流的执行顺序,通常用于头部加载JavaScript的时候需要用到. 复制代码 代码如下: window.onload = function(){     // 当网页加载完成后执行这里的代码块 }; 而在jQuery中也有一个对应的函数,即等待网页加载完后执行代码块 复制代码 代码如下: $(document

关于JavaScript中事件绑定的方法总结_javascript技巧

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX="" 来绑定.举个例子: <input type="button" value="点我呦" onclick="aler

JavaScript中this绑定详解

this 可以说是 javascript 中最耐人寻味的一个特性,就像高中英语里各种时态,比如被动时态,过去时,现在时,过去进行时一样,无论弄错过多少次,下一次依然可能弄错.本文启发于<你不知道的JavaScript上卷>,对 javasript 中的 this 进行一个总结. 学习 this 的第一步就是明白 this 既不是指向函数自身也不指向函数的作用域.this 实际上是在函数被调用时发生的绑定,它指向什么地方完全取决于函数在哪里被调用. 默认绑定 在 javascript 中 ,最常

详细讲解JavaScript中的this绑定_javascript技巧

this 可以说是 javascript 中最耐人寻味的一个特性,就像高中英语里各种时态,比如被动时态,过去时,现在时,过去进行时一样,无论弄错过多少次,下一次依然可能弄错.本文启发于<你不知道的JavaScript上卷>,对 javasript 中的 this 进行一个总结. 学习 this 的第一步就是明白 this 既不是指向函数自身也不指向函数的作用域.this 实际上是在函数被调用时发生的绑定,它指向什么地方完全取决于函数在哪里被调用. 默认绑定 在 javascript 中 ,最常

浅析javascript中的DOM

本文主要给大家简单介绍了是什么是DOM.动态操作DOM元素的方法.使用jsjs操作样式以及Form对象的简介,是个人对于javascript中的DOM的理解的总结,推荐给小伙伴们. 什么是Dom? 1.简介 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.Document Object Model的历史可以追溯至1990年代后期微软与Netscape的"浏览器大战",双方为了在JavaScript与JScrip

JavaScript中this详解_javascript技巧

这里的主题是 this ,不扯远了.this 本身原本很简单,总是指向类的当前实例,this 不能赋值.这前提是说 this 不能脱离 类/对象 来说,也就是说 this 是面向对象语言里常见的一个关键字.说的极端点,如果你编写的 JS 采用函数式写法,而不是面向对象式,你所有的代码里 this 会少很多,甚至没有.记住这一点,当你使用 this 时,你应该是在使用对象/类 方式开发,否则 this 只是函数调用时的副作用. JavaScript中的this总是让人迷惑,应该是js众所周知的坑之

JavaScript中的闭包_javascript技巧

1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内.而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数和声明的其他内部函数.当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包. 闭包的特点 1 函数嵌套函数 2 函数内部可以引用外部的参数和变量 3 参数和变量不会被垃

注意JavaScript中RegExp对象的test方法

javascript|对象 javascript 中的 RegExp 对象用于正则表达式相关的操作,这个对象提供了一个方法 test 来判定某个字符串是否满足某个 pattern. 返回值是 true/false.今天我碰到了一个问题: <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig;    alert(re.test('112.3'));alert(re.test('33'));//--&

php与javascript中的时间戳有什么区别

php中的时间戳与javascript中的时间戳的比较,本质上看,它们是一样的东西,但如果二者要进行 相等比较的时候,还是有点不同的,稍不注意,就会误入歧途,所以,这里列出容易忽略的两点不同, 供大家参考: 1)单位问题:php中取时间戳时,大多通过time()方法来获得,它获取到数值是以秒作为单位的, 而javascript中从Date对象的getTime()方法中获得的数值是以毫秒为单位 ,所以,要比较它们获得的 时间是否是同一天,必须要注意把它们的单位转换成一样,1秒=1000毫秒,剩余的