javascript的对象是由函数创建的吗? 函数是属于对象的一种吗? 我在这个博客看到的 有点http://www.cnblogs.com/wangfu...
javascript的对象是由函数创建的吗? 函数是属于对象的一种吗? 我在这个博客看到的 有点http://www.cnblogs.com/wangfu...
如果题主学过java
,应该知道java的对象
由定义在类里面的构造器生成。
public Foo {
private int value;
public Foo(int init_value){
value = init_value;
}
public void sayValue(){
System.out.println("print: " + value);
}
public static void main(String[] args){
Foo bar = new Foo(233); // new一个Foo类实例,从Foo的构造器(里面的Foo方法)入手
bar.sayValue(); // print: 233
}
}
上面的例子可以看到java的对象生成是相对更复杂的的
需要 Foo 构造器(没有就用默认)
传递给构造器的参数可以不同,可以有多个构造器,有不同的构造策略
需要 new
操作符
保存对象的变量是有类型的 这里算是 Foo
类型 ( Foo bar = new Foo(233);
)
这里我用 .
操作符来访问对象的属性,这样能通过调用某些方法看到 函数的名字
和函数源码
之类,反应了js函数是对象的事实,另外,也可以用foo instanceof Object
来看看 foo
是不是 对象
。
顺便一提Java的方法不是对象。
题主应该是初学JS的吧? 你应该改变你对函数的看法了, JS
里的函数跟 C
和 Java
这类经典语言的函数(方法)有较大不同(最显而易见的是当参数传递这点)。
还有题主的问题问的比较模糊,希望能描述清楚一些。
个人也认为JS的对象都是由构造函数之类生成的,函数是对象毋庸置疑。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
楼主可以引入以一个观念,就是JS是基于对象的脚本语言,就是说他的对象有着十分特别的实现。
首先JS函数的声明其实也是创建一个对象的实例,这个对象叫做
Function
:这样就好理解了吧,其实JS中的函数本身也是一个对象的实例,这样的实例既有原型
prototype
,又有_proto_
,可以将此比作“波粒二象性”;我们把函数(有具体作用的代码段)比作波(包含一个起点到终点的过程,对于函数就是执行到返回);
把对象比作粒(具有实体的单元,对于对象来说就是实例);
那么JS里的函数对象就具有物理上所说的“波粒二象性”。
因此:
在JS中,函数本身也是一个对象,因此“通过函数创建对象”的说法从实现上来说的确没有问题,但并不准确。
“函数对象”这个概念应当区分于普通对象—————创建了一个对象,它不一定是函数(构造函数),而一旦声明了一个函数,这个函数一定是一个对象。
Function的爹是Object(),所以说,JS是基于对象的脚本语言。