`
seadragonnj
  • 浏览: 57155 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js的一些隐晦语法或技巧

F# 
阅读更多

因为一直用java开发,后来也学了一段时间js,但总是感觉它不伦不类,语法也没有个层次,感觉很乱,也就没有认真的学习过,直到最近看到了extjs才又有了我学习js的兴趣,本想看extjs的源码,不过有点吃力,一些js的用法不太清楚,现在把一些和java不一样的语法做的记录,也方便自己以后查看:

一、apply和call的用法

apply和call又叫对象冒充,它们实际的功能实际上是一样的,只是在用法上有一点区别:

js 代码
  1. function f(args1, args2){   
  2.     alert(this.name)   
  3.     alert(arguments.length)   
  4. }    
  5. var o1 = {   
  6.     name : 'lisq'   
  7. }   
  8. f.apply(o1)    
  9.   
  10. var o2 = {   
  11.     name : 'lufang'   
  12. }   
  13. f.apply(o2, [1, 2]) //第二个参数是一个数组  
  14. f.call(o2, "hello")  

上面的代码就是aplly和call的典型用法,在上面的代码中注意到f()方法中的this指向的是调用它的对象的作用域,即所有函数内部的this指针都会被赋值为thisArg,这可实现将函数作为另外一个对象的方法运行的目的

另外通过用这两个方法还可以实现继承:

js 代码
  1. function base() {   
  2.     this.method = function() {   
  3.         window.alert(this.member);   
  4.     }   
  5. }   
  6. function extend() {   
  7.     this.member="whl";   
  8.     base.call(this);   
  9.   
  10. }   
  11. var e=new extend();   
  12. e.method();   

二、arguments的含义:

当调用一个函数时,会有一个隐藏的参数传进去,就是arguments,注意它存储的是实际传入函数的参数,

alert(arguments instanceof Array);//return false 说明这个arguments并不是一个数据,但可以通过arguments[n]访问参数的值

(转)Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。

 

java 代码
分享到:
评论

相关推荐

    隐晦的恋爱短信.doc

    隐晦的恋爱短信.doc

    JavaScript中创建原子的方法总结

    前言 ...反之非原子操作可能会因为外界操作的引入导致代码变得难以控制而产生隐晦的bug。 JavaScript中可以通过Object.create(null)来创建原子,这是非常自然而又易于理解的方式。不过也有一些其它的

    PowerShell小技巧之读取Windows产品密钥

    之前大多数人可能用过VBS读取Windows产品密钥的VBS脚本,VBS脚本通常都比较隐晦、难懂,今天忙里偷闲,随手写了一个用于读取Windows产品密钥的PowerShell脚本。 代码如下: 代码如下:  =====文件名:Get-...

    linux多线程开发区别与window

    Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别,不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多...

    PowerShell小技巧之定时抓取屏幕图像

    事实上这样记录操作系统的行为显得相对单薄一点,因为记录的内容不太形象,对于新手来说太过于隐晦了,对于人类来说,图像会比文字更加有利于用户理解。当操作系统不方便装屏幕记录软件,但又需要看已经登录用户在干...

    AngularJS使用ng-app自动加载bootstrap框架问题分析

    本文实例分析了AngularJS使用ng-...还有一种比较隐晦的表示:在浏览器的控制台输出错误信息。这提示我们:使用JS框架的时候,一定要用下F12看看控制台是否有错误。 第3种情况 和 第5种情况:不带属性的ng-app模块不能自

    跟我一起写 Makefile 作者:陈皓 整理:祝冬华

    12、从C程序、Yacc文件或Lex文件创建Lint库的隐含规则 (65) 三、隐含规则使用的变量 (65) 1、关于命令的变量。 (65) 2、关于命令参数的变量 (66) 四、隐含规则链 (67) 五、定义模式规则 (68) 1、模式规则介绍 (68) 2...

    阿里巴巴公司内部资料:交互设计全档案

    和很多交互设计师一样,我也有过盲目自信和茫然失措,历经时间的鞭挞后,渐渐的我对这份工作、这个专业,有了一些个人的感悟…… 从我的理解来看,100分的顶尖交互设计师们通常天赋异禀、特立独行。但75分的合格...

    collector:jQuery Zepto的超级可扩展,轻量级实现

    Collector.js是一个高度可扩展的,大多为只读的查询库,类似于jQuery或Zepto ,我们提供的功能最少,并且允许用户扩展很多。 请查看,还请检查和以进行速度比较。 多数情况下,只读是什么意思…… 有一种更好的...

    Python解惑之整数比较详解

    清楚is和==的区别之后,对此也许你有可能会遇到下面的这些困惑,于是就有了这样一篇文章,试图把Python中一些隐晦的东西趴出来,希望对你有一定的帮助。 我们先来看两段代码: 片段一: >>> a = 256 >>> b = 256 >>...

    Verilog中的阻塞赋值和非阻塞复制

    阻塞和非阻塞语句作为verilog HDL语言的最大难点之一,...理解不清或运用不当,都往往会导致设计工程达不到预期的效果,而其中的错误又很隐晦。下面我给大家谈谈阻塞和非阻塞语句的本质区别和在FPGA设计中的不同运用。

    java解惑 中文版

    你认为你到底有多了解Java?你是一个代码神探吗?你是否曾经花费过数天时间去追踪一个由Java或...你要解决掉这些谜题,并且永远都不要成为那些有违直觉或隐晦的行为的猎物,这些行为甚至可以愚弄大多数有经验的程序员。

    C++11显示类型转换的优点

    隐式类型转换是C++一个让人又爱又恨的特性,使用方便,但可能会降低代码可读性,甚至会造成一些十分隐晦的错误。 #include using namespace std; class MyInt { public: //单参构造函数 explicit MyInt(int ...

    wpf 加载.OBJ文件并加载材质后看不见模型的解决方法

    请查看文档,此难题比较隐晦,经过努力详细比对才发现的!赶快顶起吧!!

    MFC源码剖析之——MFC来龙去脉

    和消息动向,然而这些重要的动线在MFC 应用程序中却隐晦不明,因为它们被Application Framework 包起来了。这一章主要目的除了解释MFC 应用程序的长像,也要从MFC 源代 码中检验出一个Windows 程序原本该有的程序...

    json属性名为什么要双引号(个人猜测)

    原因一: 更加规范,利于解析 原因二: 避免class等关键字引起的不...个人猜测如果js对象的属性名为非string类型,会先进行类型转换, 但是这个过程中可能会出现非预期性的值,虽然仅属个例,但养成一个好习惯还是很有必要的

    LogAnalyzer64无人机日志分析助手.zip

    如题,日志分析利器,apm官方出品。用法比较隐晦,非专业,无耐心研究人士忌用。

    JAVA解惑(美)布洛赫

    “每一种编程语言都有其怪癖的行为。这本生动的书通过趣味十足和发人深省的编程谜题揭示了Java...你要解决掉这些谜题,并且永远都不要成为那些有违直觉或隐晦的行为的猎物,这些行为甚至可以愚弄大多数有经验的程序员。

Global site tag (gtag.js) - Google Analytics