JavaScript 里的 'this' 的一般解释】的更多相关文章

本文旨在帮助自己和大家理解 JS 里的 this, 翻译.整理并改写自本人关注的一个博主 Dmitri Pavlutin,原文链接如下: https://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/ 欢迎大家批评指正.共同进步. 1. this 的神秘 长久以来,this 关键字对我来说都是神秘. 在 Java, PHP 或者其他标准语言里,this 是 class 方法里当前对象的实例.this 不能在方法外调用,这样…
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量."  [示例一] var name = 'wangxi' function user () { // var name = 'wangxi' function getName () { console.log(name) } getName() } user() // wangxi 在 getNa…
JavaScript里的依赖注入 我喜欢引用这句话,“程序是对复杂性的管理”.计算机世界是一个巨大的抽象建筑群.我们简单的包装一些东西然后发布新工具,周而复始.现在思考下,你所使用的语言包括的一些内建的抽象函数或是低级操作符.这在JavaScript里是一样的. 迟早你需要用到其他开发人员的抽象成果——即你依靠别人的代码.我喜欢依赖自由(无依赖)的模块,但那是难以实现的.甚至你创建的那些漂亮的黑盒子组件也或多或少会依赖一些东西.这正是依赖注入大显身手的之处.现在有效地管理依赖的能力是绝对必要的.…
闭包的概念已经出来很长时间了,网上资源一大把,本着拿来主意的方法来看看. 这一篇文章 学习Javascript闭包(Closure) 是大神阮一峰的博文,作者循序渐进,讲的很透彻.下面一一剖析. 1.变量的作用域 变量的作用域有局部和全局两种,在javascript的函数内部可以访问全局变量,如下: // 函数内部可以直接读取全局变量 var n = 99; function f1() { alert(n); } f1(); 在f1函数中可以访问到全局变量n.输出如下: 反过来就不行了,在函数外…
JavaScript里值比较的方法 参考资料 一张图彻底搞懂JavaScript的==运算 toString()和valueof()方法的区别 Object.is 和 == 与 === 不同 == 运算符会对它两边的操作数做隐式的类型转换 === 也不会对操作数进行类型转换,但是它会把 -0和 +0 这两个数值视为相同的,还会把两个 NAN 看成是不相等的. +0 === -0 // true -0 === 0 // true +0 === 0 // true Object.is(-0, +0)…
今天在给一个学妹调她的代码BUG时,她的问题就是在一个for循环里不清楚流程的具体流向,所以导致了页面怎么调都是有问题,嗯确实你如果不清楚语句流向很轻易就会出问题,所以说for循环不会用或者说用的不恰当还是很可怕的.我也借此机会顺带复习了一下javascript里的for()循环.翻出了自己以前关于for循环的一些笔记,有些内容跃然浮于脑海中,以下大部分来自很久之前的笔记,可能会有一部分来自于网上其他优秀博客的内容. for循环里共有三个流程语句,这三个部分之间用";"分开.第一个是一…
Javascript里,想把一个整数转换成字符串,字符串长度为2.  想把一个整数转换成字符串,字符串长度为2,怎么弄?比如 1 => "01"11 => "11"    有几个思路1.判断数字是几位数 然后加上0 2.除以10,然后转换成字符串,然后把小数点删掉 var b = 2 b = (b > 9 ? "" : "0") +b…
前序:我一直对于for跟for..in存在一种误解,我觉得for都能把事情都做了,为啥还要for...in...这玩意了,有啥用,所以今天就说说JavaScript里的循环语句. 循环 要计算1+2+3,我们可以直接写表达式: 但是当需要计算1+2+3+4+5......+10000, 如果通过表达式来写,估计我们会奔溃, 所以我们现在就可以使用循环(for)来搞定, 其实也很简单,javaScript的循环有两种,一种是for循环,通过初始条件.结束条件和递增条件来循环执行语句块: 这一种估计…
Safari 里的javascript 里不能用submit作为函数名, 这样写的时候,怎么也运行不了JeasyUI的onSubmit的function, 改个名就可以了.而在chrome下面就没问题 function submit() { $('#form').form('submit', { onSubmit: function () { var account = $("#txtLoginId").val(); var password = $("#txtPwd&quo…
JavaScript 里,$ 代表什么? 比如说我写一个mouseover事件: $(document).ready(function(){ $("p").mouseover(function(){ $("p").css("background-color","#333"); }); });   $只是一个普通字符,由于jQuery的广泛应用,$被当作jQuery的标识符. <html> <head>&…
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) { console.log(myArray[index]); } 自从JavaScript5起,我们开始可以使用内置的forEach方法: myArray.forEach(function (value) { console.log(value); }); 写法简单了许多,但也有短处:你不能中断循环(使…
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) { console.log(m…
很多编程语言里都有sleep(),delay()等方法,它能让我们的程序不那么着急的去执行下一步操作,而是延迟.等待一段时间.软件开发中经常会遇到需要这样的函数,比如等待几分钟去检查某一事件是否发生.JavaScript里有setTimeout()方法来实现设定一段时间后执行某个任务,但写法很丑陋,需要提供回调函数: setTimeout(function(){ alert("Hello"); }, 3000); JavaScript Promise API是新出现了一个API,借助…
JavaScript里的小妖精———this!! 关于this指向这个问题,活生生折磨了我一个下午,回来静下心捋顺一下,总结出来一下规律. 当然,this这个复杂的问题不是一句两句可以说清楚,作为菜鸟,我的总结也就是为了做一些 ‘坑人的’ 笔试题,所以只能欢迎吐槽了. 题中一般分为两种情况 调用者是函数 函数通过对象被调用(this指向对象 ) 函数单独被调用(this指向undefined,非严格模式下指向全局) 调用者是对象 对象声明在函数中 (this指向undefined,非严格模式下指…
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) {  console.log(myArray[index]); } 自从JavaScript5起,我们开始可以使用内置的forEach方法: myArray.forEach(function (value) {  console.log(value); }); 写法简单了许多,但也有短处:你不能中断循环…
摘要:Three dots ( - ) in JavaScript. 本文分享自华为云社区<JavaScript 里三个点 ... 的用法>,作者: Jerry Wang . Rest Parameters 使用 rest 参数,我们可以将任意数量的参数收集到一个数组中,然后用它们做我们想做的事情. 引入了其余参数以减少由参数引起的样板代码. function myFunc(a, b, ...args) { console.log(a); // 22 console.log(b); // 98…
本文转载自:众成翻译 译者:MinweiShen 链接:http://www.zcfy.cc/article/901 原文:https://rainsoft.io/gentle-explanation-of-this-in-javascript/ 1. this之谜 许多时候,this关键词对我以及许多刚起步的JavaScript程序员来说,都是一个谜.它是一种很强大的特性,但是理解它需要花不少功夫. 对有Java, PHP或者其他常见的编程语言背景的人来说,this仅仅被看成是类方法中当前对象…
一,三者共同点 js中的apply,call,bind是对于初学者比较难的概念之一,比如说我..参考几篇文章之后,统一来讲, 1.这三个函数都属于Function.prototype下面的方法,如下图所示.从而可以被每一个函数实例所调用. 2.他们的作用都是改变函数的执行上下文.举个例子: var a=1; function printA(){ console.log(this.a); } var obj={a:2}; printA();//相当于window.printA(),此时this指向…
JavaScript的规范(ECMA-262 ECMAScript)没规定JavaScript引擎要如何实现对JavaScript对象的内存管理.实际实现中几乎所有JavaScript引擎都使用基于跟踪(trace)的GC来实现自动内存管理.编写JavaScript程序时只要管new出对象,JavaScript引擎在底下会通过分析对象图的可到达性来判断对象的存活,进而释放掉已无活引用的对象. 所以要让JavaScript引擎有机会释放掉某个对象,就得确保整个程序里已经没有对那个对象的活引用. 前…
[转]在JavaScript文件里嵌入大量字符串常量是经常遇到的事.有时为了省事,就把一些界面的HTML和CSS直接写在JS文件里.数量少还好,多的话就密密麻麻的一坨文字,讲究美观的文艺青年们,会用大量的字符连接符号甚至加上缩进,强制换成好几行.例如: var html = '<div>' + '<p>Hello</p>' + '<p>World'</p>' + '</div>'; 这还好,要是字符串里有不少双引号单引号,那就更麻烦了…
用自然语言的角度理解JavaScript中的this关键字 <script type="text/javascript"> function ftn03(){ var ftn04 = function(){//在javascript语言里任何匿名函数都是属于window对象 console.log(this);// window , "函数里的this指向window" }; ftn04(); } ftn03(); /*其实在javascript语言里任…
代码执行效率对于程序员和程序来说都是至关重要的,尤其是遇到了那些需要大量调用.反复调用的函数方法.在很多Javascript框架里你都能看到有反复调用的函数.当在使用这些框架时,我们必须小心翼翼的尽量采取优化的代码编写.其中一种优化代码的方法就是在创建函数前先使用判断语句,而不是每次函数调用时都执行一次.下面我们来看一个简单的例子. 不好的写法 下面的写法相对而言不是那么优化和有效率: function something() { if('something' in obj) { // some…
看完以下这段话之后,就理解DOCUMNET.READY之类的说法了. 或是JAVASCRIPT的浏览器里更细致的操作DOCUMENT的东西了. DOCUMNET和WINDOWS谁大谁小, 立即执行的匿名JAVASCRIPT函数如何定义的东东 都应该比较了然了吧..…
JavaScript与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行过程中被逐行解释执行JS是 弱类型语言,它的变量没有严格类型限制JS是面向对象语言,但 没有明确的类的概念(虽然有class关键字,然而目前并没有什么卵用)JS虽然没有类,但可以通过一些方法来模拟类以及实现类的继承.一切皆对象,还先从对象说起. 1.对象(Object) ECMA-262对对象的定义是:无序属性的集合,其属性可以包含基本值.对象或者函数.直观点描述,就是由多个键值对组成的散…
  javascript  一.找到元素. var d = document.getElementById("") var d = document.getElementsByName("") var d = document.getElementsByTagName("") var d = document.getElementsByClassName("") 二.操作元素. (一)操作内容 1.表单 value 赋值,取值…
一.序 数据类型,平时天天在用,今日闲暇便重新阅读了JavaScript数据类型这块,才发现平时用的时候有许些错误和不足,且对此深有感悟,便写下这篇文章加以巩固基础知识并有空翻出来温故而知新. 二.概述 ECMAScript中有5种基本数据类型:Undefined.Null.Boolean.Number.String;当然还有一种复杂数据类型:Object,Object本质上是有一组无序的名值对组成的,如对象,数组等: 三.数据类型 3.1:Undefined Undefined类型只有一个值,…
最终效果: var greet = function(greeting, name) { return greeting + ' ' + name; }; var sayHelloTo = _.partial(greet, 'hello'); sayHelloTo('fred'); // => 'hello fred' 来自:http://lodashjs.com/docs/#_partialfunc-partials 除非你已经使用过其他的函数式编程,不然你可能对下面这两个概念很陌生:“偏函数…
转载:  http://www.oschina.net/question/54100_15938 使用javascript类库函数时,经常会遇到一个函数,可以使用不同个数的参数的情况 比如:exp(var1) exp(var1, var2) 但是在实际编写javascript函数时, 函数不能同名,所以不可能是不同参数个数分开写: 参数个数必须符合函数的设置,所以函数声明里有的就必须有,不可能调用时写少几个: …… 这个问题是困扰了很久了,一直不知道为什么?! 今天一早在看别人代码,无意中竟然看…
如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现? 你能不用运行代码,就能准确说出这些语句会打印什么出来呢? ABAP class ZCL_SUPER definition public create public . public section. methods CONSTRUCTOR . methods SET_I importing !IV…
在SAP云平台里打开SAP HANA Web-Based Development Workbench进行服务器端JavaScript的开发. 创建一个新的package: 创建一个新的application: 创建一个新的文件google-distance-api.xshttpdest用于维护destination相关信息: host = "maps.googleapis.com"; port = 80; pathPrefix = "/maps/api/distancemat…