() 关于js的小问题,js函数共分几类呢?

我学习js一段时间之后,发现js的预置函数有以下几种。
想请问各位老师,这几类函数业内对它们有归类么?或者有惯用说法么?

1,如下中.length 这样的连括号都没有的函数,有固定说法表示么?

"好好学习".length

2、如以下这种函数,有括号但又不像.length函数前面有对象的。

Stringnull
alertok

3、这种函数前即有对象,也有括号的属于哪类函数?

"好好学习".charAt1

———————————————————————————————————————
学生学js时间不长,理解浅薄,请各位老师指点
谢谢老司机,老司机永远一路顺风。
3Q
———————————————————————————————————————

  1. length 应该是属性,而非函数吧,你这样其实就是访问字符串的内置属性length

  2. 在浏览器下,直接访问的函数,当属于window的内置方法了,这么理解,这里说内置不一定对,如果是你自定义的暴露在全局下的,也属于window的方法

  3. "好好学习"双引号括起来,其实表示它就是一个字符串实例了,则可以调用String.prototype.charAt

一般来说,函数都是有括号调用的,这是语法吧。

按你这么举例的话,其实函数就分两类了,一类单身狗(没对象)/手动滑稽/,一类为对象方法;

感觉其实也没啥好区分的,无非就是有对象的时候,有对象方法可以用,没对象的时候,自己定义方法来用。

@夜深未眠ok
首先,没人是你老师,你自己是自己的老师.
其次,进入正题:

“好好学习”.length

这个是什么函数?这个不是函数,是属性.
并且在这里我要提醒一点:

// 为其赋值
"好好学习".length = 10
// 10
"好好学习".length // 4

你会发现,赋值之后,他的属性没有变化.这是为什么呢?
因为在浏览器的实现过程中,实际上有一个叫做”包装类”的中间过渡变量.

包装类的类型一般是function,它是可以有属性值的。
包装类也好,alert也好,它们又都是window的属性.

只是浏览器中代码默认的运行环境就是window,所以浏览器默认可以省略window不写。
至于第三种也是一样,它仍然是属于包装类的属性。
你也许会问,但是你说的和我测试的不一样啊:

这个明明是字符串类型啊?
好的,我就来解释一下:

当我使用”好好学习”.length = 10的时候,
js引擎发现有调用属性的写法,会立即在后台动态让其包装成String类型,然后就给String下面新增了一个属性
length = 10,然后内部立刻会重新设置”length”的值为“10”(”好好学习”= 10,接下来当你console.log来输> 出”好好学习”.length时,js引擎判断又有调用属性的写法,再次new String”好好学习”了下,自然在这个新的> String类型下面是有length属性且值为4,所以返回4了.

至于这些和函数有几类有什么关系,抱歉我也不是很明白,我觉得你应该是不太了解javascript的值类型,但是我记得又不太清楚了。不过如果你真的对于这个问题有很大的兴趣,我建议你去看一下《javascript权威指南》。
我记得里面有相关知识的内容,但不巧手头没带书。
8888888888

第一种:length 属于类的成员变量,直接使用
第二种:alert 是 window 对象的成员函数,这是一种默认的简写。写全的话是:window.alert"hello";
第三种:成员函数调用。

我也刚学习JS,如果答得不对,还请指正。

第一个是对象的属性,第二个是也能算是函数,叫构造函数,第三个是方法。
三者的关系:对象的属性的值是一个函数,就把它(属性)称为对象的方法。

很喜欢你这种问问题的态度。不像有些人问问题都不知道问得啥

1.属性
对于你的例子”好好学习”.length

var obj = { value : test, length : 4 }
console.logobj.length

这个就叫取对象的属性,至于好好学习这个字符串怎么会有属性的,可以按照@jack_king和@Dont说的。
2.函数
function fun1{}这种叫函数 或者 fun2 = function{}。
直接调用fun1,fun2,
其实是window.fun1和window.fun2,
自动添加到了window上具体可以参考3
3.方法

var obj = { fun1 : function{}
}
obj.fun1

这种 属性的值为函数的话,就叫做对象的方法。

第一次回答问题,可能有些乱。

发表评论

电子邮件地址不会被公开。 必填项已用*标注