网站建设资讯

NEWS

网站建设资讯

改造javascript,改造美人鱼体验

js-改变this指向的几种方法

javaScript 为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部 this 的指向问题,常用的有 bind()、call()、apply() 三种方法

创新互联服务项目包括昌邑网站建设、昌邑网站制作、昌邑网页制作以及昌邑网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,昌邑网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到昌邑省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

call() 方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的 this 指向。

fun.call(thisArg, arg1, arg2, ...)

thisArg:在 fun 函数运行时指定的 this 值

arg1,arg2:传递的其他参数

返回值就是函数的返回值,因为它就是调用函数

因此当我们想改变 this 指向,同时想调用这个函数的时候,可以使用 call,比如继承

fun.apply(thisArg, [argsArray])

thisArg:在fun函数运行时指定的 this 值

argsArray:传递的值,必须包含在数组里面

apply 主要跟数组有关系,比如使用 Math.max() 求数组的最大值

bind() 方法不会调用函数。但是能改变函数内部this 指向

fun.bind(thisArg, arg1, arg2, ...)

thisArg:在 fun 函数运行时指定的 this 值

arg1,arg2:传递的其他参数

返回由指定的 this 值和初始化参数改造的原函数拷贝

因此当我们只是想改变 this 指向,并且不想调用这个函数的时候,可以使用 bind

相同点:

都可以改变函数内部的this指向.

区别点:

1.call 和 apply 会调用函数, 并且改变函数内部this指向.

2.call 和 apply 传递的参数不一样, call 传递参数 aru1, aru2..形式 apply 必须数组形式[arg]

3.bind 不会调用函数, 可以改变函数内部this指向.

主要应用场景:

1.call 经常做继承.

2.apply 经常跟数组有关系. 比如借助于数学对象实现数组最大值最小值

3.bind 不调用函数,但是还想改变this指向. 比如改变定时器内部的this指向。

Javascript在嵌入式的应用场景有哪些

Javascript是最流行的脚本语言之一,也是Web的主要技术之一,这样的优势导致它在嵌入式领域也有一定的作用

飞利浦出过一套 Pronto 智能中控设备系列,可以通过编写代码自定义界面和逻辑,控制继电器、串口、红外等设备,适用于家庭和办公室自动化控制。

制设备分为中控主机和控制板(即带彩色触摸屏的遥控器),本身是嵌入式系统,但控制板中存储的自定义逻辑代码就是使用改造过的Javascript脚本规

范。为家庭或安装好被控制的设备以后,只需通过必要连线或局域网将中控主机与被控设备连通,再将电脑上编写好的脚本和配置文件通过USB口传到控制板上,

就可以使用了。电脑端编辑是半图形化半文本式的界面(类似Visual Studio和 Xcode

的使用),代码编写又不难,因此上手非常容易。编写界面和最终的控制板使用体验都很好。

“ProntoScript

是一种基于 JavaScript 的软件工具,它使安装人员能够创建动态的双向用户界面,利用全图形的灵活性对 RS232 或 IP

进行系统控制。该工具集成在 ProntoEdit Professional 软件中。与 Pronto 合作伙伴预建的 ProntoScript

模块可通过网站获得。对于典型安装,您可以选择使用标准安装参考文件,重新分配各个组件即可。更高级的 JavaScript

编程人员能够创建他们自己的 ProntoScript 模块,以便进行全面的系统操作和反馈。”

可惜不知为何没有后续研发新产品。

在未来,JavaScript有可能一统天下吗

JS无法自主控制线程,即便NODE.JS,其本身也是C语言的实现,只是使用JS间接调用C语言去执行而已。因此JS得触角,是无法触及高性能应用的。

从语言本身,与其认为JS可以一统天下,C#一统天下的可能性似乎更高一些。由于Unity3D的存在,可以一次开发,便发布到21种平台。windows,linux,mac自然不在话下,还包括PS4,3DS,SWITCH,XBOX等游戏机。。各种VR,AR设备,以及WebGL。。只要WebGL逐渐普及,或H5的性能进一步提升,Unity便可直接生成前端页面。。且性能非常棒。。连3D大型游戏都可以流畅运行。。

简单说,JS的问题在语言本身,先天的缺陷,导致其很难通过后天的修复来弥补。除非彻底改造成编译型静态语言。。而像ES6那样的小修小补,是根本无法从本质上改良JS的。。也许要等到ES10以上的版本,JS才能真正胜任高性能开发

而C#本身性能就很棒,问题在于前端平台的性能不足,目前的H5性能依然无法满足C#的需要,而WEBGL普及度偏低。。显然C#要实现“无所不能”,比JS容易的多。只要前端平台的性能再稍加提升,也许仅仅需要HTML5.2或HTML5.3,或者各大浏览器都默认开启WEBGL,这一切就可能成为现实。

归根结底,JS也许有一天可以"无所不能",但永远无法涉及高性能的应用,而到时候“无所不能”的语言,也不仅仅只有JS一种....未来的WEB前端,将是由引擎直接生成webassembly,并不是靠敲JS实现的。


文章名称:改造javascript,改造美人鱼体验
文章源于:http://cdweb.net/article/phegpe.html