Javascript中有关函数的问题

查看:83
本文介绍了Javascript中有关函数的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

看js高级程序设计, 里面提到函数的内部属性有两个, argument 和 this. 后一节又说函数的属性是length 和 prototype.

  1. 我之前学过Java, C++, 基本上对象的属性不就是对象的属性吗? 还有内部和外部之分?

  2. 而且我发现我在函数内部若想使用argument, 是不用functionName.argument这种方式的, 直接argument就行了, 另外就算是functionName.argument也没错, 也可以完成引用. 但是对于函数的属性例如lengthprototype, 就必须使用functionName.argument, 这又是为什么呢? 求大神解答.

解决方案

对象的属性不就是对象的属性吗? 还有内部和外部之分?

没有外部与内部属性之分,你说的arguments与this算是某种特性,它们都有各自的作用。

arguments最早的确是一个函数的属性Function.arguments,现在标准早就弃用了,已经是独立的arguments默认对象,在函数中的块级作用域中会自动产生。

this也并非是对象的属性,它是类似你学过的Java, C++里面的this概念,是一种语言中参照(refer)的设计,但实际上它在JS中的功用会与Java, C++有些不同,要理解它需要进一步理解更多资讯。

我不清楚为何JS高级程序设计要这么说,所以我研究了一下这本书中你说的章节。

下面是原文与中译本的截图,你可以比对一下,我认为这是中译的标题有误,造成你的误解。"Function Internals"指的应该是函数的"内部构成"或"内部结构"等等,而中译本中用了"属性"会联想到"对象的属性"是误解。指对象属性的英文应该是"Properties"。

而且我发现我在函数内部若想使用argument, 是不用functionName.argument这种方式的, 直接argument就行了, 另外就算是functionName.argument也没错, 也可以完成引用. 但是对于函数的属性例如length 和 prototype, 就必须使用functionName.argument, 这又是为什么呢?

Function.arguments可以用是因为最早以前有一个Function.arguments,后来改了直接用arguments。现在还可以用是因为浏览器保留了下来这种用法。浏览器原本就会保留早期的一些用法,不见得后来改了标准,就一定得去除掉旧的用法,只是现在没人这样用而已,arguments有特殊的作用,把它是个独立的对象来用会比较恰当。其它的属性的用法,就一般的对象属性的取成员的用法。函数原本就算是对象,自然就这样用。

另外,arguments是后面有加s的英文专用字词,它是代表复数的值的对象。你用单数的argument是用不了的。

这篇关于Javascript中有关函数的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆